假设我有一个这样的模块:
module MyAssigments
def dummy_assignment=(value)
puts "it's not assigned #{value}"
end
end
以及包含它的类,如下所示:
class MyClass
include MyAssigments
def x=(value)
dummy_assignment=(value)
end
end
然后
o = MyClass.new
o.x="anything"
不会在屏幕上打印任何内容,为什么?
Ruby 在这里有一个语法/配对怪癖:使用 assginemnt 方法进行self
必须显式限定,因此:
def x=(value)
self.dummy_assignment=value
end
如果没有self.
部分,Ruby 假定它是对局部变量的赋值。