微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用哈希注入数组时出现“未定义方法`[] = nil:NilClass”错误

如何解决使用哈希注入数组时出现“未定义方法`[] = nil:NilClass”错误

这是我第一次使用 Ruby,我需要使用注入方法从给定数组创建哈希。这段代码与我发现的几个教程非常相似,但在执行时出现 undefined method `[]=' for nil:NilClass 错误。我在这里遗漏了什么吗?

def int_hash()
    [[:key1,"value1"],[:key2,"value2"]].inject({}) do |hash,element|
            hash[element.first] = element.last
            puts hash
    end
end

int_hash()

解决方法

由于 puts 是块中的最后一条语句并且它返回 nil,因此返回 nil 导致累加器 hash 在第二个语句中变为 nil迭代。您应该返回哈希值。您应该将数组作为参数传递给 inj_hash 方法以使其可重用。

def inj_hash(arr)
  arr.inject({}) do |hash,element|
    hash[element.first] = element.last
    hash
  end
end

inj_hash([[:key1,"value1"],[:key2,"value2"]])
#=> {:key1=>"value1",:key2=>"value2"}

从键值对数组创建哈希的最简单解决方案是使用 Hash::[]

arr = [[:key1,"value2"]]
Hash[arr]
#=> {:key1=>"value1",:key2=>"value2"}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。