gpt4 book ai didi

ruby - `def +@` 和 `def -@` 是什么意思?

转载 作者:数据小太阳 更新时间:2023-10-29 06:39:24 26 4
gpt4 key购买 nike

在此Haskell-like comprehensions implementation in Ruby有一些我在 Ruby 中从未见过的代码:

class Array
def +@
# implementation
end

def -@
# implementation
end
end

def +@def -@ 是什么意思?在哪里可以找到关于它们的(半)官方信息?

最佳答案

它们是一元的 +- 方法。当您编写 -object+object 时会调用它们。例如,语法 +x 被替换为 x.+@

考虑一下:

class Foo
def +(other_foo)
puts 'binary +'
end

def +@
puts 'unary +'
end
end

f = Foo.new
g = Foo.new

+ f
# unary +

f + g
# binary +

f + (+ g)
# unary +
# binary +

另一个不那么做作的例子:

class Array
def -@
map(&:-@)
end
end

- [1, 2, -3]
# => [-1, -2, 3]

它们被提及 here并且有一篇关于如何定义它们的文章 here .

关于ruby - `def +@` 和 `def -@` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16624131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com