block in LookThere:未定义的方法[]为nil Nilclass(NoMethodError)

时间:2013-04-21 23:44:11

标签: ruby

我无法弄清楚为什么ruby会给我这个错误。这是代码。

def lookThere
    lookAround = @warrior.look
    lookAround.each do |npc|
        if not npc.empty? and not npc.wall?
            @npcRanged = @npcRangedList[npc.to_s()]
            return 
        end
    end         
end

3 个答案:

答案 0 :(得分:1)

显然@npcRangedListnil。没有看到更多代码,没有人能够告诉你原因。

答案 1 :(得分:0)

@npcRangedListnil。您可能希望将其设置为initialize

中的内容

答案 2 :(得分:0)

可能以下方式可以处理这种情况。我只是试图创建一种可能的方法来重新生成你得到的错误和一个可能的解决方案:

class Foo
 def intialize
 end
 def showval
  @arr[2] = 2
  @arr
 end
end

p Foo.new.showval #=> `showval': undefined method `[]=' for nil:NilClass (NoMethodError)

现在如果我编写与下面相同的类,则不会抛出错误。

class Foo
 def initialize
  @arr ||= []
  end
 def showval
  @arr[2] = 2
  @arr
 end
end

p Foo.new.showval #=> [nil, nil, 2]