Ruby on rails 为什么这是一个整数?
我的irb中有以下代码: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(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(如果条件不通过)。