我正在尝试循环哈希数组。当我到达获取枚举器以开始循环的位置时,出现以下错误:
undefined method `[]' for nil:NilClass
我的代码如下所示:
def extraireAttributs (attributsParam)
classeTrouvee = false
scanTrouve = false
ownerOSTrouve = false
ownerAppTrouve = false
resultat = Hash.new(0)
attributs = Array(attributsParam)
attributs.each do |attribut| #CRASHES HERE!!!
typeAttribut = attribut['objectTypeAttribute']
[...]
我检查了调试模式以确保attributsParams
论证和attributs
变量不为零或空。两者(因为它们是相同的!)都包含 59 个哈希对象,但我仍然无法在数组上获取枚举器。
为什么我不断收到此错误?
Thanks!
undefined method `[]' for nil:NilClass
说你试图做something[index]
but something
is nil
。 Ruby 不会让你使用nil
作为数组(即调用[]
的方法)。
问题不在attributs.each
行,但在下面的行上调用[]
方法上attribut
.
typeAttribut = attribut['objectTypeAttribute']
这表明了一些东西attributs
为零。如果发生这种情况attributsParam
是一个包含 nil 的列表,如下所示。
attributsParam = [nil];
attributs = Array(attributsParam);
# [nil]
puts attributs.inspect
调试它的最简单方法是添加puts attributs.inspect
就在循环之前。
还要考虑您是否真的需要attributs = Array(attributsParam)
行或者如果它已经是某物可枚举 https://ruby-doc.org/core/Enumerable.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)