为什么我不能混合模块中的赋值方法

时间:2012-04-22 10:41:19

标签: ruby class module mixins assignment-operator

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

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"

在屏幕上不打印任何内容,为什么?

1 个答案:

答案 0 :(得分:3)

Ruby在这里有一个语法/配对的怪癖:使用self的assginemnt方法必须明确限定:

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

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