如何在Ruby方法的if语句中使用Time函数实现按时间段返回问候语
代码问题定位与修正方案
原代码存在的问题
- 获取时间的方式错误:
t = Time仅将Time类赋值给变量,并未获取当前时间的实例,需要调用Time.now拿到当前的时间对象。 - 判断操作符使用错误:代码中使用单等号
=做条件判断,单等号是赋值操作,并非比较/包含判断,会导致条件逻辑完全失效。 - 时间数值未做对应转换:直接定义的
0900..1200是整数区间,没有和当前时间的时分数值做关联,无法匹配到实际时间。 - 区间边界覆盖不符合需求:原代码第二个区间设置为12011600,遗漏了12:00整的时间点,和需求中12:0016:00返回下午问候的要求不符。
正确实现代码
def hello current_time = Time.now # 将当前时间转换为「小时*100 + 分钟」的整数格式,方便区间判断 time_num = current_time.hour * 100 + current_time.min if time_num >= 900 && time_num < 1200 'Good morning!' elsif time_num >= 1200 && time_num <= 1600 'Good afternoon!' else 'Hello!' end end
如果需求约定12:00整属于上午问候范围,只需将第一个判断条件的time_num < 1200改为time_num <= 1200,第二个判断条件的time_num >= 1200改为time_num >= 1201即可。
内容的提问来源于stack exchange,提问作者CodePrincess
相关产品推荐
相关产品推荐

