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 に答える