@ - 在以下方法中意味着什么?

时间:2015-06-09 06:47:43

标签: ruby

我不知道@的含义:

def -@
  Test.new(-@x,-@y)
end

@在这里意味着什么?

2 个答案:

答案 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@yTest个实例的实例变量。现在假设您的@x值为5。因此-@x基本上是-5,它只是对重载unary minus方法的调用,该方法由Fixnum类为其实例定义。

答案 1 :(得分:2)

你在谈论哪个@

第一个只是方法名称的一部分,就像bdef bar中方法名称的一部分一样。特别是,这是在使用一元前缀-运算符时调用的方法,如-42中所示。

另外两个是表示实例变量的符号。