未定义的方法'[]'为nil:NilClass <nomethoderror> </nomethoderror>

时间:2014-03-20 14:39:58

标签: ruby

请帮助我,我试图执行此方法时得到NoM​​ethodError

def traspuesta()
i=0
aux=nil
    for i in 0..@lt.length do
            aux = @lt[i][0]
            @lt[i][0] = @lt[i][1]
            @lt[i][1] = aux
    end
end

完整的错误说明了这一点:

Undefined method '[]' for nil:NilClass <NoMethodError>
from MDListaTrip.rb:83:in 'each'
from MDListaTrip.rb:83:in 'traspuesta'
from MDListaTrip.rb:111:in '<main>'

2 个答案:

答案 0 :(得分:0)

使用

for i in 0...@lt.length

for i in 0..@lt.length-1

答案 1 :(得分:0)

原因是您使用0..@lt.length范围,但必须使用0..@lt.length-1。因此,你的最后一项是零。并且nil对象不响应[]方法。这就是你收到错误的原因。

为了防止这种情况,您可以使用迭代器:

@lt.each do |item|
  aux = item[0]
  item[0] = item[1]
  item[1] = aux
end