我试图创建一个程序来测试插入的输入是文本还是数字还是特殊字符。所以我用!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)}' –