Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么这是一个整数?_Ruby On Rails_Ruby_Integer - Fatal编程技术网

Ruby on rails 为什么这是一个整数?

Ruby on rails 为什么这是一个整数?,ruby-on-rails,ruby,integer,Ruby On Rails,Ruby,Integer,我的irb中有以下代码: irb(main):005:0> num = gets.chomp.to_i , => 0 irb(main):006:0> num.is_a? Integer => true irb(main):007:0> num = gets.chomp.to_i q => 0 irb(main):008:0> num.is_a? Integer => true 我对ruby真的很陌生,我想知道为什么“q”是一个整数。。。你能解释

我的irb中有以下代码:

irb(main):005:0> num = gets.chomp.to_i
,
=> 0
irb(main):006:0> num.is_a? Integer
=> true
irb(main):007:0> num = gets.chomp.to_i
q
=> 0
irb(main):008:0> num.is_a? Integer
=> true
我对ruby真的很陌生,我想知道为什么“q”是一个整数。。。你能解释一下为什么吗

这是最重要的

返回将str中的前导字符解释为整数的结果(介于2和36之间)。超过有效数字结尾的无关字符将被忽略。如果str开头没有有效数字,则返回0。当base有效时,此方法从不引发异常

如文件所述,任何前导字符不是有效数字的字符串仍将转换为整数,特别是0

",".to_i == 0
# => true
显然,
0
是一个整数。

这是一个整数

返回将str中的前导字符解释为整数的结果(介于2和36之间)。超过有效数字结尾的无关字符将被忽略。如果str开头没有有效数字,则返回0。当base有效时,此方法从不引发异常

如文件所述,任何前导字符不是有效数字的字符串仍将转换为整数,特别是0

",".to_i == 0
# => true

显然,
0
是一个整数。

正如其他人所指出的,它将把字符串转换为它的整数对应项。如果无法进行适当的转换(即,它只包含
),则将返回
0

如果您想有条件地执行某些操作,如果输入是整数,您可以执行以下操作:

if number = Integer(gets.chomp) rescue nil
  puts "We have an integer!"
else
  puts "No Integer here...move along"
end

正如其他人所指出的,将把字符串转换为它的整数对应项。如果无法进行适当的转换(即,它只包含
),则将返回
0

如果您想有条件地执行某些操作,如果输入是整数,您可以执行以下操作:

if number = Integer(gets.chomp) rescue nil
  puts "We have an integer!"
else
  puts "No Integer here...move along"
end

非常感谢。我在文件里发现了这一点。是否有其他方法可以检查输入是否为整数?只需使用正则表达式:
/\a\d+\z/.match(num)
,其中
num
是您的输入。请记住,您可以检查输入是否正式有效,但如果要将输入用作整数,则必须将其转换,因为来自键盘的输入始终是字符串。谢谢。我在文件里发现了这一点。是否有其他方法可以检查输入是否为整数?只需使用正则表达式:
/\a\d+\z/.match(num)
,其中
num
是您的输入。请记住,您可以检查输入是否正式有效,但如果您想将输入用作整数,则必须对其进行转换,因为来自键盘的输入始终是字符串。您可以读取String#to_i方法实际执行的操作。希望能有帮助。@maicher请看这里。。对谢谢!:)您知道如何使用其他方法来确保if语句仅在整数时执行吗?
integer(“,”
将引发ArgumentError。gets方法返回string或nil,因此无法获得integer实例作为结果。如果您想确保您的输入是一种整数类型,可以执行@zettec的技巧(check=Integer(get.chomp)rescue false)。如果输入是整数,则右侧将返回整数(不是nil&false,因此If条件将通过),否则将引发错误并返回false(如果条件不通过)。您可以读取String#to_i方法实际执行的操作。希望能有帮助。@maicher请看这里。。对谢谢!:)您知道如何使用其他方法来确保if语句仅在整数时执行吗?
integer(“,”
将引发ArgumentError。gets方法返回string或nil,因此无法获得integer实例作为结果。如果您想确保您的输入是一种整数类型,可以执行@zettec的技巧(check=Integer(get.chomp)rescue false)。如果输入是整数,则右侧将返回整数(不是nil&false,因此If条件将通过),否则将引发错误并返回false(如果条件不通过)。