2017-09-26 50 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可能是一个更清晰的名称,因为它强烈建议将包含键值对的两元素数组传递给该块。

它们是彼此的别名:它们共享相同的源代码。

相关问题