Ruby的@符号方法

时间:2019-03-07 16:56:17

标签: ruby

感觉好像这里发生了一些魔术。 在哪里可以找到有关'@'符号方法的更多信息/文档?

# https://ryanbigg.com/2019/03/ruby-trickery
def -@
  +self
end

1 个答案:

答案 0 :(得分:1)

http://www.rubyinside.com/rubys-unary-operators-and-how-to-redefine-their-functionality-5610.html

总结那里写的内容,运算符通常是二进制的,但是可以是一元的:

4 - 2

'-'在这里用作二进制运算符-它对2个变量进行运算

-4

'-'现在被用作一元运算符,与用作二进制运算符的含义完全不同。

在方法定义的末尾添加@告诉ruby它是一元运算符:

class MagicString < String
  def +@
    upcase
  end
end

str = MagicString.new("This is my string!")
+str => "THIS IS MY STRING!"

通过添加@,我们告诉ruby只希望对一个变量进行操作(我想您可以将其称为一个参数,但这在这里不太合适)