我正在尝试循环哈希数组。当我到达获取枚举器开始循环的位置时,出现以下错误:
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']
[...]
我在 Debug模式下检查以确保 attributsParams
参数和 attributs
变量不是 nil 或空的。两者(因为它们相同!)都包含 59 个 Hashes 对象,但我仍然无法在 Array 上获得 Enumerator。
为什么我不断收到此错误?
谢谢!
最佳答案
undefined method `[]' for nil:NilClass
说你试图做 something[index]
但是something
是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)
线或者如果它已经是东西Enumerable .
关于arrays - Ruby:尝试在哈希数组上获取 Enumerator 时,nil:NilClass 的未定义方法 `[]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514057/