2010-08-09 83 views

回答

5

我假設你的意思,你說:「回報」,因爲Hash#each已經返回一個哈希(接收)「收益」。

要回答你的問題:如果你需要一個哈希鍵和值,你可以創建一個。就像這樣:

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

沒有替代each方法產生hashs,所以上面的是你能做的最好的。

0

呼叫.each有兩個參數:

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

你可以map散單元素哈希值的列表,然後在列表上調用each

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

我認爲你正在嘗試以某種方式轉換散列,所以我會給你解決這個問題的方法,這可能不完全相同。要修改一個散列,你必須.map他們並構造一個新的散列。

這是我的反向鍵和值:

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