2017-09-26 49 views
1

比方說,我想訪問的哈希值是這樣的:在Ruby中,#each_pair在通過散列迭代時優於#each的優點是什麼?

munsters = { 
    "Herman" => { "age" => 32, "gender" => "male" }, 
    "Lily" => { "age" => 30, "gender" => "female" }, 
    "Grandpa" => { "age" => 402, "gender" => "male" }, 
    "Eddie" => { "age" => 10, "gender" => "male" }, 
    "Marilyn" => { "age" => 23, "gender" => "female"} 
} 

我可以用#each有兩個參數:

munsters.each do |key, value| 
    puts "#{name} is a #{values["age"]}-year-old #{values["gender"]}." 
end 

或者我可以用#each_pair有兩個參數:

munsters.each_pair do |key, value| 
    puts "#{name} is a #{values["age"]}-year-old #{values["gender"]}." 
end 

也許兩者之間的差異並沒有在這個簡單的例子中證明,但有人可以幫助m e瞭解使用#each_pair優於#each的優勢?

+1

@lurker你可以用'#each_pair'完成相同的操作。 –

回答

5

因爲散列是一個Enumerable,它必須有一個each方法。 each_pair可能是一個更清晰的名稱,因爲它強烈建議將包含鍵值對的兩元素數組傳遞給該塊。

它們是彼此的別名:它們共享相同的源代碼。

相關問題