2009-09-16 5 views
3

Я получаю очень странное сообщение об ошибке при попытке выполнить итерацию по массиву объектов. Ошибка(неопределенный метод `+ @ 'for []: Array)

NoMethodError (undefined method `[email protected]' for []:Array): 

Вот код этого цикла.

#go through items and see if there are any corresponding offers 
    #All matches are stored in a hash 
    items.each do |itemsi| 
     bestoffer = -1 
     matchescounter++ #matchescounter only get incredmented when all the offers have been taken care of 
     offers.each do |offs| 
     if itemsi.togive.to_str == offs.totake.to_str 
      if offs.togive.to_int > bestoffer 
       bestoffer = offs.togive.to_int 
       matches[matchescounter].store(itemi, offer)   
      end#if 
     end#if 
     end#offers loop 
    end#items loop 

У меня нет + @ нигде в моем коде. Strange

ответ

10

В Ruby нет оператора ++.

И сообщение об ошибке на самом деле довольно ясно: в нем говорится, что метод с именем «+ @» не существует для вашего экземпляра типа массива. '+ @' - это фактическое имя метода экземпляра унарный плюс, который определен для типа Numeric, но не для Array.

+0

use + = 1 вместо – erik

+0

Спасибо, это была моя java, возвращающаяся мне в голову. –

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