嗨,我正在做這個問題,它沒有通過自動化測驗,很想知道我哪里出錯了?非常感謝。
問題: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
uj5u.com熱心網友回復:
這看起來像是一項作業,所以我會盡力不只是給出答案。您的代碼中有一些誤解和不正確的陳述句導致它的行為方式如此。
t = Time將類分配Time給t,它不會生成時間。您可以使用irb甚至在線REPL來了解有關變數實時保存內容的更多資訊。
t = Time
t #=> Time
t.class #=> Class
你應該看看紅寶石時間類,你會感興趣的方法#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是不同的類,因此您無法將原始時間與一系列整數進行比較。
修復時間生成和時間比較應該會讓您走上通過測驗的正確道路。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/316378.html
下一篇:滲透測驗中的一波三折
