哈希.each不返回哈希值?

时间:2010-08-09 17:30:10

标签: ruby

Hash.each返回数组[key, value], 但如果我想要一个哈希?

示例:{:key => value }

4 个答案:

答案 0 :(得分:5)

我假设你的意思是“收益”,你说“返回”,因为Hash#each已经返回一个哈希(接收者)。

回答你的问题:如果你需要一个带有键和值的哈希,你可以创建一个。像这样:

hash.each do |key, value|
  kv_hash = {key => value}
  do_something_with(kv_hash)
end

没有替代each方法可以产生哈希值,因此以上是您可以做的最佳方法。

答案 1 :(得分:1)

我认为你试图以某种方式转换哈希,所以我会给你解决这个问题的方法,这可能不完全相同。要修改哈希,您必须.map它们并构造一个新哈希。

这是我反转键和值的方式:

h = {:a => 'a', :b => 'b'}
Hash[h.map{ |k,v| [v, k] }]
# => {"a"=>:a, "b"=>:b}

答案 2 :(得分:0)

使用两个参数调用.each

>> a = {1 => 2, 3 => 4}
>> a.each { |b, c|
?>     puts "#{b} => #{c}"
>>   }
1 => 2
3 => 4
=> {1=>2, 3=>4}

答案 3 :(得分:0)

你可以map哈希到单元素哈希列表,然后在列表上调用each

h = {:a => 'a', :b => 'b'}
h.map{ |k,v| {k => v}}.each{ |x| puts x }