为什么这是一个整数?

时间:2015-06-25 20:58:28

标签: 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

我真的很喜欢红宝石,我想知道,为什么“q”是“,”这里是一个整数...你能解释一下为什么吗?

3 个答案:

答案 0 :(得分:4)

这是documentation of String.to_i

  

返回将str中的前导字符解释为整数基数(2到36之间)的结果。超出有效数字末尾的无关字符将被忽略。如果在str的开头没有有效数字,则返回0。当base有效时,此方法永远不会引发异常。

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

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

显然,0是一个整数。

答案 1 :(得分:0)

Here您可以阅读String#to_i方法实际执行的操作。希望它有所帮助。

答案 2 :(得分:0)

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

如果你想有条件地做一些事情,如果输入是一个整数,你可以做类似的事情:

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