Joe*_*oug 5 ruby arrays hash enumerator
我试图循环哈希数组.当我到达我获取Enumerator开始循环的点时,我收到以下错误:
undefined method `[]' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
我的代码如下所示:
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']
[...]
Run Code Online (Sandbox Code Playgroud)
我检查了调试模式以确保attributsParams参数和attributs变量不是nil或空.两者(因为它们是相同的!)包含59个Hashes对象,但我仍然无法在Array上获得Enumerator.
为什么我一直收到这个错误?
谢谢!
Sch*_*ern 10
undefined method `[]' for nil:NilClass说你试图这样做something[index],但是something是nil.Ruby不会让你nil用作数组(即调用[]它上面的方法).
问题不attributs.each在线,而是在调用[]方法的行之后attribut.
typeAttribut = attribut['objectTypeAttribute']
Run Code Online (Sandbox Code Playgroud)
这表明什么attributs是零.如果attributsParam列表包含nil,就会发生这种情况.
attributsParam = [nil];
attributs = Array(attributsParam);
# [nil]
puts attributs.inspect
Run Code Online (Sandbox Code Playgroud)
最简单的调试方法是puts attributs.inspect在循环之前添加.
还要考虑你是否真的需要该attributs = Array(attributsParam)行,或者它是否已经是可枚举的东西.
| 归档时间: |
|
| 查看次数: |
34326 次 |
| 最近记录: |