假设我想访问这样的散列值:

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

也许在这个简单的例子中,两者之间的区别并没有得到证实,但是有人能帮助我理解使用#each_pair比使用#each的优势吗?

最佳答案

因为hash是可枚举的,所以它必须有一个each方法。each_pair可能是一个更清晰的名称,因为它强烈建议将包含键值对的两个元素数组传递给块。
它们是彼此的别名:它们共享相同的源代码。

关于ruby - 在Ruby中,遍历哈希时,#each_pair比#each有什么优势?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46435551/

10-13 07:25