ruby - 在 Ruby 中,#each_pair 在遍历哈希时比 #each 有什么优势?

标签 ruby hash each block

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

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

它们互为别名:它们共享相同的源代码。

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

相关文章:

python - 在 C 中使用 hiredis 访问 redis 哈希

Javascript 从每个函数返回变量

javascript - 在 jQuery 中反转 $.each 输出

ruby-on-rails - 订购批处理澄清溶液

ruby-on-rails - 在服务中返回错误对象的错误处理

sorting - Groovy:按值对哈希键进行排序

从数组派生的 perl 散列不能按预期工作

java - 如何在java中添加字符串和int的循环

ruby - Mechanize /Nokogiri 无法使用 xpath 解析 XML

ruby - textmate 中 .ru 文件的语法突出显示