-3

我正在尝试测试我的变量是否为整数,这是代码:

if (params[:int1].is_a?(Integer) && params[:int2].is_a?(Integer))
  add(params[:int1], params[:int2])
else
  puts "Need two integers"
end

如果你知道它为什么不起作用,你就会引起我的注意。

4

2 回答 2

0
params= { int1: "1" }

puts params[:int1].class

> String

您的参数哈希可能包含字符串值而不是整数。如果你想检查一个字符串是否是一个有效的整数,你可以尝试用一个正则表达式来验证它,如下所示:

if /\d+/=~ params[:int1]
  # do stuff
end
于 2013-09-06T13:09:53.847 回答
0

params[] 只存储字符串。您需要将它们转换为整数。

尝试类似:

params[:int1].empty? ? raise EmptyIntegerException : my_int1 = params[:int1].to_i
于 2013-09-06T13:11:05.263 回答