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

Ruby how to find each value in hash greater than x?

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

months = {
  "MAR" => 31,
  'APR' => 30,
  'MAY' => 31,
  'JUN' => 30
}

您可以使用:

months.select { |_month, days| days > 30 }    

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

这是文档:

一旦你得到了你需要的值,你就可以将它们打印到控制台(或者输出你想要的),例如

long_months = months.select { |_month, days| days > 30 }
long_months.each { |month, days| puts "#{month} has #{days} days" }

综上所述,在打印结果之前赋值意味着两个循环,而这可以使用简单的 each:

在一个循环中实现
months.each do |month, days|
  puts("#{month} has #{days} days") if days > 30
end

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

用块

检查select方法
months.select{|key, value| value > 30}