ruby - 代码运行,只是不完全符合我的需要
问题描述
这是另一位社区成员慷慨帮助的代码。
require 'date'
today = Date.today
hires = [
{ name: 'Jerry', date: Date.new(2021, 8, 15) },
{ name: 'Berry', date: Date.new(2021, 8, 13) },
{ name: 'Jack', date: Date.new(2021, 8, 19) }
]
def report(hires, today)
hires.each do |hire|
puts(
format(
'%s , needs vacation',
hire[:name],
hire[:date],
today - hire[:date]
)
)
end
end
report(hires,today)
此代码将输出
Jerry was hired on 2021-05-13, which is X days ago
Berry was hired on 2021-05-06, which is X days ago # The X's are examples :)
Jack was hired on 2021-05-17, which is X days ago
基本上我想做的是运行代码,它只显示从今天开始 91-97 天前被雇用的人,并输出他们的名字。所以他们的输出最好是发布类似的东西。
Jerry, needs vacation
Berry, needs vacation
# it would only say Jerry and Berry Because Jack had not rolled over yet.
谢谢您的帮助!
解决方案
您可以对数组使用“选择”枚举器
https://ruby-doc.org/core-3.0.2/Enumerable.html#method-i-select
require 'date'
VACATION_INTERVAL = (91..97).freeze
hires = [
{ name: 'Jerry', date: Date.new(2021, 8, 15) },
{ name: 'Berry', date: Date.new(2021, 8, 13) },
{ name: 'Jack', date: Date.new(2021, 8, 19) }
]
def report(hires, today)
hires = hires.select do |hire|
# Do not use "!" after select
# Unless you want to keep the variable value after method's run
day_interval = (today - hire[:date]).to_i # The default return is Rational
VACATION_INTERVAL.include?(day_interval)
end
hires.each { |hire| puts(format('%s, needs vacation', hire[:name])) }
end
today = Date.today
由于这取决于您的代码上下文,我只是添加了“选择”行,并删除了您的“格式”方法未使用的行
我更改了您的“雇用”变量以匹配从今天开始的 91 到 97 天的间隔,为您提供以下示例(因为今天,8 月 17 日,与您的示例不匹配);
hires = [
{ name: 'Jerry', date: Date.new(2021, 8, 15) },
{ name: 'Berry', date: Date.new(2021, 5, 14) },
{ name: 'Jack', date: Date.new(2021, 5, 16) }
]
并执行
report(hires,today)
输出;
Berry, needs vacation
Jack, needs vacation
但是该方法仍然返回数组,所以要小心
推荐阅读
- css - 为什么网格行高太高?
- java - org.springframework.dao.InvalidDataAccessApiUsageException:实体不能为空
- r - 闪亮的 DTedit 问题:与 selectInput 和 Observe 事件结合时,添加新行将传递给连续的 data.frame。我怎样才能避免这种情况?
- flutter - 如何从名为 MyHomePage 的 StatefulWidget 中调用名为 MyDetailPage 的其他“ StatefulWidget ”或方法?
- material-ui - Material UI Drawer 永久变体不起作用。移出位置
- javascript - Javascript ArrayBuffer 到服务器端的文件
- flask - MathJax 在多行而不是内联渲染
- python - 为什么我的 Tkinter Gui 看不到图像?
- laravel - Laravel - 如果不是超级管理员,如何显示拒绝访问
- performance - emu8086 图形模式延迟