2012-11-04 37 views
0

我知道使用self.name是有意義的,但是@name在下面的代碼中意味着什麼?在初始化ruby類時,@name或self.name有什麼區別?

class NewGame < Game 
    attr_accessor :name 
    def initialize(name, options={}) 
    super 
    self.name = name 
    end 

    def add_game(name) 
    @name = name 
    end 
end 

這是否合理?我犯了一個錯誤嗎?

+4

你不能有nGame作爲一類的名稱。 – sawa

回答

3

@name是一個實例變量,它可以像類實例的私有成員那樣訪問。

self.name是一個調用自我對象的方法,如果沒有明確定義,您將得到一個NoMethodError。

我將勇往直前,並解釋說,在你的類寫attr_accessor :weight是一樣的:

def weight=(v) 
    @weight = v 
end 

def weight 
    @weight 
end 
+0

attr_accessor是一個獲取和設置,對吧? – tipsywacky

+0

確實是...... –

+0

嗯......還是不明白self.name和@name有什麼區別。你能再解釋一下嗎? – tipsywacky

相關問題