arrays - Ruby:尝试在哈希数组上获取 Enumerator 时,nil:NilClass 的未定义方法 `[]'

标签 arrays ruby hash enumerator

我正在尝试循环哈希数组。当我到达获取枚举器开始循环的位置时,出现以下错误:

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]但是somethingnil . 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/

相关文章:

ruby - 用 7n +1 填充 ruby​​ 中的数组

python - Python 是否执行绑定(bind)检查?

php - 有没有办法在 PHP 5.2 中使用 bcrypt "hashing"?

java - 散列和取消散列?

ruby - 在 Ruby 中返回具有修改值的散列

php - 将数组存储在 while 循环中以供外部使用

java - 更改变量也会更改先前分配的变量

ruby - 如何从文本文件中读取字符,然后将它们存储到 Ruby 中的散列中

ruby - 为什么此文件上传代码会损坏我的 MP3 文件?

ruby-on-rails - 使用 button_to 更新多个值 - Rails 4