下面的代碼:attr_accessor如何知道:player = @player?
class Dungeon
attr_accessor :player
def initialize(player_name)
@player = Player.new(player_name)
end
end
現在,如果我寫的:
dungeon = Dungeon.new("Robert")
puts dungeon.player.name
它顯然會吐出Robert
。
我對Ruby有點新,所以請原諒我,如果這個問題對所有人都是顯而易見的。我正在努力將頭圍繞在它周圍。我正在學習「實例」,「類」和全局變量,我的問題是:Ruby如何知道:player
在上面的代碼中是指@player
?爲什麼不寫代碼,而是:@player
?
這是否有意義?
「@」字符實際上並不是符號的一部分,它只是表示'player'是一個實例變量而不是局部變量。 – roippi
當你學習不同的語言時,你會發現有些東西是巫術和黑魔法。這是其中的一件事。 Ruby的內部工作定義了'attr_accessor'來映射符號,比如':player',指向一個在該類中定義的實例變量'@ player'。它可能沒有什麼幫助,但只要接受它就是這樣,Ruby就是這樣寫的。 –