2015-07-26 4 views
1

Я пытаюсь написать простой класс для апельсинового дерева ... но я получаю эту ошибку: pine_orangetree.rb: 11: in oneYearPasses': undefined method + 'для nil: NilClass (NoMethodError)Неопределенная ошибка метода в классе Ruby

Когда я называю метод oneYearPasses ... Почему?

class OrangeTree 

    def initalize 
     @height = 0 
     @oranges = 0 
    end 



    def oneYearPasses 
     @height += 2 
     @oranges = 0 

     if @height > 7 
      @oranges += 10 
     end 

     if @height < 30 
      puts "Another year has passed..." 
     else 
      puts "The orange tree died..." 
     end  
    end 

    def height 
     puts "The tree is #{@height} inches tall." 
    end 

    def countTheOranges 
     puts "There are #{@oranges} on the tree." 
    end 

    def pickAnOrange 
     @oranges -= 1 
     puts "You picked an orange." 
     puts "There are #{@oranges} left." 
    end 


end 

tree1 = OrangeTree.new 
tree1.oneYearPasses 
tree1.height 

ответ

3

У вас есть опечатка в слове initalize. Он должен быть initialize.

И из-за опечатки метод initalize не вызывается, когда объект создан, и, следовательно, переменная экземпляра @height не определена при создании. И вы не можете позвонить += на объект, который еще не существует.

Также как побочная заметка, вы не должны добавлять слишком много пустых строк из синего. Это против Ruby Style Guide.

+0

WOW. LOL Извините! Это то, что иногда делает программирование сумасшедшим. xD Спасибо! – hackrnaut

+0

@sickcodeworm Добро пожаловать :) Возможно, вам стоит отметить это как принятое решение. –

Смежные вопросы