このようなクラスがある場合:
class Person
def initialize(options={})
self.name = options[:name]
end
def name=(name)
@name = name
end
end
...その後、「name=」メソッドが呼び出され、期待どおりの結果が得られます。しかし、例を少し変更して「name=」への呼び出しから「self」を削除すると、メソッドは呼び出されません。
class Person
def initialize(options={})
name = options[:name]
end
def name=(name)
@name = name
end
end
どうしてこれなの?なぜ「自己」がそこになければならないのですか?私は、暗黙の「自己」が「初期化」コンストラクターで期待どおりに設定されるため、最初の例のように動作するという印象を受けました。