在 Ruby 中,#each_pair 在遍历哈希时比 #each 有啥优势?

Posted

技术标签:

【中文标题】在 Ruby 中,#each_pair 在遍历哈希时比 #each 有啥优势?【英文标题】:In Ruby, what's the advantage of #each_pair over #each when iterating through a hash?在 Ruby 中,#each_pair 在遍历哈希时比 #each 有什么优势? 【发布时间】:2018-03-08 05:08:38 【问题描述】:

假设我想像这样访问哈希值:

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 的优势吗?

【问题讨论】:

@lurker 你可以用#each_pair做同样的事情。 【参考方案1】:

因为 Hash 是一个 Enumerable,它必须有一个each 方法。 each_pair 可能是一个更清晰的名称,因为它强烈建议将包含键值对的二元素数组传递给块。

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

【讨论】:

以上是关于在 Ruby 中,#each_pair 在遍历哈希时比 #each 有啥优势?的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中更新哈希键的惯用方法是啥?

如何将 JSON 转换为 Ruby 哈希

雷林鹏分享:Ruby 哈希(Hash)

使用 ruby​​ 将多个实例变量转换为哈希的更好方法?

按键排序哈希,在 Ruby 中返回哈希

如何在 Ruby 中复制哈希?