2016-04-19 98 views
1

从一个数组:哈希散列从一个数组

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) 
# => {} 

我在做什么错了?

+0

,虽然返回散列的阵列。 – teddybear

+1

{{num:1},{num:2},{num:3},{num:4},{num:5}}不是有效的散列,并且散列不能具有多于一旦。 –

+0

请提供您想要的输出。您发布为期望输出的数据结构不是合法的Ruby数据结构。这甚至不是合法的Ruby语法。 –

回答

5

首先,由于您使用的是Hash {}语法,所以在您的问题中所需的结果没有意义,但没有键。看起来好像你希望你的结果是散列数组。

其次,你很困惑eachmapeach只是遍历数组,将每个项目传递给块。 arr.each的返回值仅为arrmap,在另一方面,返回基于块的返回值的新的数组:

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

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

+0

我明白了。我提到的每个内部哈希都没有密钥 – teddybear