将范围1..10
转换为以下格式的哈希的最简单方法是什么?
{
1 => '£1',
2 => '£2',
# ...
}
我尝试使用map
执行此操作,但最终得到的是哈希数组而不是单个哈希值。
感谢。
答案 0 :(得分:13)
Hash[(1..10).map { |num| [num, "£#{num}"] }]
或
(1..10).inject({}) { |hash, num| hash[num] = "£#{num}"; hash }
或在Ruby 1.9中
(1..10).each_with_object({}) { |num, hash| hash[num] = "£#{num}" }
答案 1 :(得分:2)
怎么样:
h = {}
(1..10).each {|x| h[x] = "£#{x}"}
答案 2 :(得分:1)
另一种方式
h = Hash.new { |hash, key| hash[key] = "£#{key}" }
每个元素都有适当的值hovever它也会响应h[100]
什么可能导致错误