Ruby / Rails:将范围转换为哈希

时间:2011-08-11 12:05:42

标签: ruby-on-rails ruby ruby-on-rails-3

将范围1..10转换为以下格式的哈希的最简单方法是什么?

{
  1 => '£1',
  2 => '£2',
  # ...
}

我尝试使用map执行此操作,但最终得到的是哈希数组而不是单个哈希值。

感谢。

3 个答案:

答案 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]什么可能导致错误