Поскольку у вас нет
def initialize
@game_score = 0
end
Назначение в определении класса не делает то, что вы думаете, что оно делает, и когда hit
вызывается, он не может добавить к nil
.
Если вы теперь спросите , что случилось с @game_score
? , ну, всегда помните Класс - это объект и . Объект является class .
Это здорово, как классы Ruby имеют такое «реальное» существование в Zen. Ruby точно не имеет названных классов, скорее, имена классов являются ссылками на объекты класса Class
. Назначив @game_score
вне метода экземпляра, вы создали экземпляр экземпляра класса , атрибут объекта класса Bowling
, который является экземпляром класса Class
. Эти объекты, в общем, не очень полезны. (См. Главу 1, Путь Ruby , Хэл Фултон.)