在 Ruby 中,#each_pair 在遍历哈希时比 #each 有什么优势?
In Ruby, what's the advantage of #each_pair over #each when iterating through a hash?
假设我想像这样访问散列的值:
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 #{value["age"]}-year-old #{value["gender"]}."
end
或者我可以使用带有两个参数的 #each_pair
:
munsters.each_pair do |key, value|
puts "#{name} is a #{value["age"]}-year-old #{value["gender"]}."
end
也许在这个简单的例子中两者之间的区别没有得到证实,但是有人可以帮助我理解使用 #each_pair
相对于 #each
的优势吗?
因为 Hash 是一个 Enumerable,它必须有一个 each
方法。 each_pair
可能是一个更清晰的名称,因为它强烈建议将包含键值对的双元素数组传递给块。
它们互为别名:它们共享相同的源代码。
假设我想像这样访问散列的值:
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 #{value["age"]}-year-old #{value["gender"]}."
end
或者我可以使用带有两个参数的 #each_pair
:
munsters.each_pair do |key, value|
puts "#{name} is a #{value["age"]}-year-old #{value["gender"]}."
end
也许在这个简单的例子中两者之间的区别没有得到证实,但是有人可以帮助我理解使用 #each_pair
相对于 #each
的优势吗?
因为 Hash 是一个 Enumerable,它必须有一个 each
方法。 each_pair
可能是一个更清晰的名称,因为它强烈建议将包含键值对的双元素数组传递给块。
它们互为别名:它们共享相同的源代码。