Ruby代码修改求助:筛选入职91-97天员工输出休假提醒
Ruby代码调整方案
现有代码存在两处不符合需求的问题:
- 未过滤入职天数,会输出所有录入的员工
- format方法传入了冗余参数,和输出占位符不匹配
修正后完整代码
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) # 先筛选入职天数在91-97天区间的员工 eligible_hires = hires.select do |hire| employed_days = (today - hire[:date]).to_i employed_days.between?(91, 97) end # 遍历符合条件的员工输出提醒 eligible_hires.each do |hire| puts format('%s, needs vacation', hire[:name]) end end report(hires, today)
改动说明
- 新增筛选逻辑:调用
select方法遍历员工列表,计算每个员工的入职天数,通过between?方法判断是否落在91到97的范围内,只保留符合条件的员工 - 优化输出逻辑:删除了format方法中冗余的入职日期、天数参数,仅保留姓名占位符,输出格式和需求完全匹配
验证提示
如果要快速验证筛选逻辑,可将today临时替换为固定测试日期,比如today = Date.new(2021, 11, 16),此时计算得:
- Jerry入职93天,符合要求
- Berry入职95天,符合要求
- Jack入职89天,不符合要求
运行后只会输出前两位员工的休假提醒,和预期效果一致。
内容的提问来源于stack exchange,提问作者Moxx123
相关产品推荐
相关产品推荐

