从一个数组:哈希散列从一个数组
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)
# => {}
我在做什么错了?
从一个数组:哈希散列从一个数组
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)
# => {}
我在做什么错了?
首先,由于您使用的是Hash {}
语法,所以在您的问题中所需的结果没有意义,但没有键。看起来好像你希望你的结果是散列数组。
其次,你很困惑each
与map
。 each
只是遍历数组,将每个项目传递给块。 arr.each
的返回值仅为arr
。 map
,在另一方面,返回基于块的返回值的新的数组:
[1, 2, 3, 4, 5].map { |item| { num: item } }
,虽然返回散列的阵列。 – teddybear
{{num:1},{num:2},{num:3},{num:4},{num:5}}不是有效的散列,并且散列不能具有多于一旦。 –
请提供您想要的输出。您发布为期望输出的数据结构不是合法的Ruby数据结构。这甚至不是合法的Ruby语法。 –