Ruby: nil:NilClass 的未定义方法“[]”试图在哈希数组上获取枚举器时
Ruby: undefined method `[]' for nil:NilClass when trying to get Enumerator on an Array of Hashes
我正在尝试循环哈希数组。当我到达获取枚举器开始循环的位置时,出现以下错误:
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 个 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.
我正在尝试循环哈希数组。当我到达获取枚举器开始循环的位置时,出现以下错误:
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 个 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.