2013-09-13 4 views
0

Я продолжаю получать сообщение об ошибке при попытке выполнить назначение калькулятора RPN, которое является частью тестовых материалов Learn Ruby. Я получаю, что «nil не может быть принудительно введен в fixednum», и у меня возникли проблемы с получением ошибки «Калькулятор пустой», когда я выполняю следующий тест rspec. Любая помощь приветствуется.RPN Calculator Test-First не может заставить Nil Into Fixnum

it "fails informatively when there's not enough values stacked away" do 
    expect { 
     calculator.plus 
    }.to raise_error("calculator is empty")  


class RPNCalculator 
    attr_accessor :stack 

def initialize 
@stack = [0] 
end 

def push(x) 
    @stack.push(x) 
end 
def plus 

@stack.push(@stack.pop + @stack.pop) 
end 

def minus 

@stack.push([email protected] + @stack.pop) 
end 

def divide 

denom = @stack.pop 
@stack.push(@stack.pop.to_f/denom) 
end 

def times 

@stack.push(@stack.pop * @stack.pop) 
end 



def value 
    @stack.last 
end 

def pop(x) 
    value = @stack.pop(x) 
    raise "calculator is empty" if @stack.nil? 
    return value 
end 


end 

ответ

0

Вы получаете эту ошибку, потому что вы пытаетесь добавить 0 и nil в рамках метода plus, то nil приходя от хлопать пустой стек.

Вы не получаете ошибку, потому что @stack никогда не будет nil, так как вы никогда не присваиваете ему nil. Это будет empty?, но это то, что вам нужно проверить. Вам также необходимо проверить это условие до, чтобы выскочить в стек.

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