【问题标题】:How to use the ruby time function in a method (if statement)?如何在方法(if 语句)中使用 ruby​​ 时间函数?
【发布时间】:2021-11-26 20:57:35
【问题描述】:

您好,我正在做这个问题,但它没有通过自动化测试,很想知道我哪里出错了?非常感谢。

问题: hello 函数应该返回(而不是 puts) '早上好!' 09:00 至 12:00 之间和 '下午好!' 12:00 至 16:00 之间和 '你好!'其他时间

def hello
    t = Time 
    if t = (0900..1200)
        return 'Good morning!'
    elsif t = (1201..1600)
        return 'Good afternoon!'
    else
        return "Hello!"
    end
    
end
hello 

【问题讨论】:

    标签: ruby if-statement methods time return-value


    【解决方案1】:

    这看起来像是一项作业,所以我会尽力不只是给出答案。您的代码中有一些误解和不正确的语句导致它的行为方式。

    t = Time 将类Time 分配给t,它不会生成时间。您可以使用irb 甚至在线REPL 来了解更多关于变量的实时信息。

    t = Time
    t       #=> Time
    t.class #=> Class
     
    

    您应该查看 ruby​​ Time 类,您会对 #new、#now 和可能的 #parse 方法感兴趣。

    您的 if 语句不是检查相等性,而是将整数范围分配给 t。范围是一个真值,所以如果代码运行第一个条件将始终为真。范围语法不正确,前导零使 ruby​​ 认为这个数字是八进制,只支持数字 0-7。

    t = (0900..1200) #=> Error, it thinks 0900 is an invalid Octal
    t = (900..1200)
    t                #=> 900..1200
    t.class          #=> Range
    

    对于这个领域,您需要更熟悉= 赋值和== 相等之间的区别。还值得注意的是,integers 和 time 是不同的类,因此您无法将原始时间与整数范围进行比较。

    修复时间生成和时间比较应该会让您走上通过测试的正确道路。

    【讨论】:

    • 这真的很有帮助,谢谢!我肯定会确保我复习这些基础知识,以避免将来犯这些错误:)
    猜你喜欢
    • 2011-12-01
    • 2022-01-05
    • 2019-08-30
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多