在 Ruby 中这个类似 Haskell 的理解实现中,有一些我在 Ruby 中从未见过的代码:
class Array
def +@
# implementation
end
def -@
# implementation
end
end
是什么def +@意思def -@?在哪里可以找到有关他们的(半)官方信息?
在 Ruby 中这个类似 Haskell 的理解实现中,有一些我在 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]