ここでは説明できないような面白いケースがあります。プライベートセッターは「一種の」プライベートだと思われますが、時には例外があります。定期的なプライベートメソッドは、プライベートセッターに異なる動作をするように見える:なぜプライベートセッターは他のプライベートメソッドと異なった動作をしますか?
class TestClass
def do
self.foo = :bar # fine
self.baz # error
end
private
def foo=(other)
@foo = other
end
def baz
end
end
TestClass.new.do
上記のコードは、明示的なself
で呼び出されているにもかかわらず、@foo
うまく設定します。 #baz
はプライベートメソッドなので、#baz
を呼び出すことができません。
これは何ですか?
通常、私は、接頭辞 'self'を使用せずに' baz'を呼ぶだろう、そしてそれは、このインスタンスで動作するはずです。しかし、私はそれがあなたの直接の質問に答えるものではないことに気づきます – moveson