哈希来自数组的哈希值

时间:2016-04-19 02:12:17

标签: ruby

从数组:

this = [1, 2, 3, 4, 5]

我正在尝试创建哈希哈希:

{{num: 1}, {num: 2}, {num: 3}, {num: 4}, {num: 5}}

但我得到一个空的哈希:

Hash.new(this.each do |num| Hash.new(num: num) end)
# => {}

我做错了什么?

2 个答案:

答案 0 :(得分:5)

首先,由于您使用的是哈希{}语法,但您的问题中所需的结果没有意义,但没有密钥。好像你希望你的结果是一个哈希数组。

其次,您将eachmap混为一谈。 each只是遍历数组,将每个项目传递给块。 arr.each的返回值仅为arr。另一方面,map根据块的返回值返回一个新数组:

[1, 2, 3, 4, 5].map { |item| { num: item } }

答案 1 :(得分:1)

您正在设置默认值(此外还有一个没有任何意义的块),而不设置任何键值对。