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}
我对 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}