如果我有這樣一個類:爲什麼'self'需要從其構造函數中調用Ruby方法?
class Person
def initialize(options={})
self.name = options[:name]
end
def name=(name)
@name = name
end
end
...那麼「NAME =」方法被調用和我得到了我的期望。但是,如果我改變的例子稍微從呼叫放棄「自我」的名字=',則方法不會被調用:
class Person
def initialize(options={})
name = options[:name]
end
def name=(name)
@name = name
end
end
這是爲什麼?爲什麼要'自我'在那裏?我的印象是隱含的「自我」會在'初始化'構造函數中按預期設置,因此會像第一個例子那樣行事。
順便說一句,self需要不僅在構造函數中調用訪問器,而且在其他所有實例方法中也是如此 –
這當然是與其標記爲重複的問題*相關的,但在某人知道所問的問題時在標記的副本中,這個問題已經得到解答。這個問題是關於'initialize'中調用的所有實例方法需要'self.'的外觀。訪問者需要'self.'這個事實就是這個問題的答案。 –