Ruby 如何在散列中找到大于 x 的每个值?

Sil*_*lka 2 ruby ruby-hash

我对 Ruby 有点陌生,并且在学习哈希时遇到了问题。我有一个哈希,其中包含本月内的几个月和几天。我需要打印每一个有 31 天的。

months = {
  "MAR" => 31,
  'APR' => 30,
  'MAY' => 31,
  'JUN' => 30
}
Run Code Online (Sandbox Code Playgroud)

SRa*_*ack 5

您可以使用:

months.select { |_month, days| days > 30 }    
Run Code Online (Sandbox Code Playgroud)

前者为您提供符合条件 ( days > 30) 的所有结果。

以下是文档:

获得所需的值后,您可以将它们打印到控制台(或根据需要输出),例如

long_months = months.select { |_month, days| days > 30 }
long_months.each { |month, days| puts "#{month} has #{days} days" }
Run Code Online (Sandbox Code Playgroud)

话虽如此,在打印结果之前分配一个值意味着两个循环,而这可以使用简单的方法在一个循环中实现each

months.each do |month, days|
  puts("#{month} has #{days} days") if days > 30
end
Run Code Online (Sandbox Code Playgroud)

这会更有效率,因为涉及的流失更少:)