我不知道@
的含义:
def -@
Test.new(-@x,-@y)
end
@
在这里意味着什么?
答案 0 :(得分:6)
要定义unary methods 减去,加上,代字号,不是(!
)< / em>,按@
或+@
!@
跟随运营商。一元方法接受零参数。
示例:
class C
def -@
puts "you inverted this object"
end
end
obj = C.new
-obj # prints "you inverted this object"
这是在Ruby中完成一元运算符重载的方法。
@x
和@y
是Test
个实例的实例变量。现在假设您的@x
值为5
。因此-@x
基本上是-5
,它只是对重载unary minus方法的调用,该方法由Fixnum
类为其实例定义。
答案 1 :(得分:2)
你在谈论哪个@
?
第一个只是方法名称的一部分,就像b
是def bar
中方法名称的一部分一样。特别是,这是在使用一元前缀-
运算符时调用的方法,如-42
中所示。
另外两个是表示实例变量的符号。