ハッシュの配列でループしようとしています。列挙子をフェッチしてループを開始するポイントに達すると、次のエラーが発生します。
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
argumentとattributs
variableがnilまたは空でないことを確認するために、デバッグモードでチェックしました。両方(同じであるため)には59個のハッシュオブジェクトが含まれていますが、配列の列挙子を取得できません。
なぜこのエラーが発生し続けるのですか?
ありがとう!
_undefined method `[]' for nil:NilClass
_は、_something[index]
_を実行しようとしたが、something
はnil
であると言います。 Rubyでは、nil
を配列として使用できません(つまり、_[]
_メソッドを呼び出します)。
問題は_attributs.each
_行ではなく、attribut
で_[]
_メソッドを呼び出す次の行にあります。
_typeAttribut = attribut['objectTypeAttribute']
_
これは、attributs
の値がnilであることを示しています。これは、attributsParam
がnilを含むリストである場合に発生する可能性があります。
_attributsParam = [nil];
attributs = Array(attributsParam);
# [nil]
puts attributs.inspect
_
デバッグする最も簡単な方法は、ループの直前に_puts attributs.inspect
_を追加することです。
また、本当にattributs = Array(attributsParam)
行が必要かどうか、または既に何か Enumerable であるかどうかも考慮してください。