Hash.each
返回数组[key, value]
,
但如果我想要一个哈希?
示例:{:key => value }
答案 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 }