我試圖創建一個程序來測試插入的輸入是文本還是數字還是特殊字符。所以我用!a.is_a? Integer
。但是,我的代碼似乎不工作。我得到這個錯誤:測試輸入的數字是否不是文本 - RUBY
syntax error, unexpected TCONSTANT. expecting keyword then ,
這裏是我的代碼:
print "Enter Number Please: "
a = gets.chomp.to_i
answer = case a
when 3
"OUTPUT: a is 3"
when 4
"OUTPUT: a is 4"
when !a.is_a? Integer
"You did not enter a number."
else
"OUTPUT: a is neither 3, nor 4"
end
puts answer
我理解這可能是更好的嘗試與整型(OBJ),但有什麼辦法,使這項工作?
在另一方面,'gets'總是會返回一個字符串,所以'當Integer'條件將永遠不會被觸發。 – Stefan
此外,'when!a.is_a?(Integer)'相當於'when true'或'false when',因爲表達式在用於比較之前將被展開。因此他們也不會在這裏匹配。爲了檢查複雜的條件,你必須使用Procs中的'when - >(v){!v.is_a?(Integer)}' –