arrays - 使用散列注入数组时出现“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, "value1"], [:key2, "value2"]]
Hash[arr]
#=> {:key1=>"value1", :key2=>"value2"}
推荐阅读
- javascript - 是否可以在没有 SSR 的情况下使用 Next.js?
- javascript - 网页游戏的封面,如何通过类而不是ID来获取元素?
- asp.net - 从数据库中下拉选择的值要绑定到另一个表 asp.net 的完整列表中
- javascript - 调用pickdate时如何添加条件?
- typescript - redux 的 typescript types 中的 CombinedState 类型的原因
- c# - 将匿名类型转换为字典
- python - 如何在 python 中使用正则表达式从多行字符串中删除特定字符
- android - react-native-firebase react-native链接问题,如何解决?
- python - Scrapy & Selenium:从文本文件加载 starturl 不起作用
- python - 规范化在 Python 中的表现如何?