[英]Test if the number input is not a text - RUBY
我試圖創建一個程序來測試插入的輸入是否為文本,數字或特殊字符。 所以我用!a.is_a? Integer
!a.is_a? Integer
。 但是我的代碼似乎不起作用。 我收到此錯誤:
語法錯誤,意外的TCONSTANT。 然后期望關鍵字,
這是我的代碼:
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
我知道嘗試使用Integer(obj)可能會更好,但是有沒有辦法做到這一點?
這里有幾件事要注意。 首先, to_i
的結果始終是整數類型值。 測試!a.is_a? Integer
!a.is_a? Integer
是多余的,因為它永遠不會失敗。
您還需要記住, case
語句本身使得與類進行比較非常容易:
case (a)
when Integer
puts "I'm a number!"
when String
puts "I'm a string!"
end
請注意,任何整數值都會自動觸發第一個條件。
即使when
子句相當慷慨,您也可以對其進行限制。 為了使解析器正確解釋您的要求,您必須像這樣表達它:
when !a.is_a?(Integer)
盡管如前所述,這可以減少到when Integer
所以其余的都是多余的。
您還希望避免在case
部分中指定某些內容,然后再引用變量。 這會使任何閱讀您的代碼的人感到困惑,並且可能是不必要的。 如果您要處理復雜的邏輯,請使用一系列的if
語句使事情變得清楚。
我認為您也可以使用三進制來做到這一點,就像這樣:
def integer?(number)
number.is_a?(Integer) ? "This is a number" : "This is not a number"
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.