我该怎么做:
hash = {}
(140..200).each {|n| h[n] = "#{n} cm"}
但在一行中返回整个哈希? 我确信这是可能的,但我不知道如何;)
答案 0 :(得分:9)
你非常接近:
hash = (140..200).inject({}) {|h, n| h[n] = "#{n} cm"; h}
答案 1 :(得分:3)
另一种选择是each_with_object
:
hash = (140..200).each_with_object({}) {|n, h| h[n] = "#{n} cm" }
我发现在没有注入的情况下使用inject
时我忘记了块中的返回值。
您也可以使用Hash[]
构造函数:
hash = Hash[(140..200).map {|n| [n, "#{n} cm"] }]
所有额外的中间阵列实例都有点浪费,但可能无关紧要。
答案 2 :(得分:0)
Hash[(140..200).map {|n| next n, "#{n} cm" }]