Ruby错误:NoMethodError:未定义nil:NilClass的“SpecificVisibleTreasures”方法
所以我用ruby写了这个游戏,我有这个功能:Ruby错误:NoMethodError:未定义nil:NilClass的“SpecificVisibleTreasures”方法,ruby,Ruby,所以我用ruby写了这个游戏,我有这个功能: puts "Monsters that make you loose a hand-weapon" for m in monsters specificTreasures = Array.new specificTreasures = m.bc.SpecificVisibleTreasures + m.bc.specificHiddenTreasures for treasure in specificTreasures
puts "Monsters that make you loose a hand-weapon"
for m in monsters
specificTreasures = Array.new
specificTreasures = m.bc.SpecificVisibleTreasures + m.bc.specificHiddenTreasures
for treasure in specificTreasures
if (treasure == TreasureKind::ONEHAND)
puts m.to_s
break
end
end
end
卑诗省是一个坏的结果,卑诗省指向一个等级怪物,它有:
def initialize(name, level, prize, bc)
@name = name
#@combatLevel = level
@level=level
@prize = prize
@badConsequence = bc
end
以及该类不良后果:
def initialize(aText, someLevels, someVisibleTreasures, someHiddenTreasures, someSpecificVisibleTreasures, someSpecificHiddenTreasures, death)
@text = aText
@levels = someLevels
@nVisibleTreasures = someVisibleTreasures
@nHiddenTreasures = someHiddenTreasures
@SpecificVisibleTreasures = someSpecificVisibleTreasures
@SpecificHiddenTreasures = someSpecificHiddenTreasures
@death = death
end
但它给了我一个错误:
NoMethodError:nil:NilClass的未定义方法“SpecificVisibleTreasures”
请帮忙?好的,谢谢大家,我已经修好了。它是其中一个类中的attr_访问器,我使用不同的循环类型更改了main:
monsters.each do |monstruo|
是的,就是这样,它现在起作用了 无法从这些代码位复制此内容。但问题是m.bc在某种程度上是零。找出原因。@SergioTulentsev谢谢你,是的,我知道我不能把所有的代码都放进去,因为它太大了,但这些代码只影响我上面写的部分。为什么它不起作用是我试图发现的……好吧,不要把所有的代码都放进去。将其简化为一个仍然有效并显示问题的最小示例。你很可能会在这个过程中发现问题。在迭代之前,可能会尝试拒绝怪物的nil。