我無法使用#buy_fish
添加到實例的#pets
散列。它成功返回正在添加到散列的內容,但散列不會更改。無法添加到實例的散列(ruby)
所有人類別
class Owner
attr_accessor :name
def initialize(name)
pets
end
def pets
@pets = {cats: [], dogs: [], fishes: []}
end
def buy_fish(name)
self.pets[:fishes] << Fish.new(name)
end
end
魚類
class Fish
attr_reader :name
def initialize(name)
@name = name
end
end
每次調用'pets'都會爲'@ pets'分配一個新的散列。將任務移入'initialize'或使用'@pets || = {...}'。 – Stefan
另外,我相信你想做'self.pets [:fishes] .push(Fish.new(name))''。否則,你只需每次設置單個「Fish」實例的關鍵字。 – John
謝謝Stefan。這工作。我還沒有學過|| =呢。有沒有另一種方法來做到這一點?我覺得這是一個騙子的出路,因爲我寫了糟糕的代碼? 另外,約翰,我只是注意到,當修復代碼。不管怎麼說,還是要謝謝你! –