1

假设我有一个这样的模块:

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"

屏幕上不打印任何东西,为什么?

4

1 回答 1

3

Ruby 在这里有一个语法/解析怪癖:使用 assginemnt 方法self必须明确限定,因此:

  def x=(value)
     self.dummy_assignment=value
  end

如果没有该self.部分,ruby 假定它是对局部变量的赋值。

于 2012-04-22T10:53:59.037 回答