在使用`to_i`或`to_f`之前是否有必要使用'chomp'?

时间:2013-12-15 19:20:44

标签: ruby

我看到人们使用以下代码:

gets.chomp.to_i

gets.chomp.to_f

我不明白为什么,这些行的结果总是与chomp之后没有gets的结果相同。

gets.chomp.to_i是否真的有必要,或gets.to_i是否足够?

3 个答案:

答案 0 :(得分:3)

来自String#to_i的文档:

  

返回将str中的前导字符解释为的结果   整数基数(2到36之间)。 无关的字符过去了   有效数字的结尾将被忽略。如果没有有效号码   str的开头,返回0

String#to_f的行为方式相同,当然不包括基数。

超出有效数字末尾的

无关字符将被忽略,这将包括换行符。因此无需使用chomp

答案 1 :(得分:2)

我认为它的工作方式相同,因此如果您要立即执行chomp或{{1},则gets之后不需要to_i }。

在实践中,由于将to_f排除在外,我从未见过引发错误或行为不同。

当我看到它在答案中使用时,我发现它会分散注意力,并且绝对不需要它。它没有增加“风格”,正如@TheTinMan所说,它浪费了CPU周期。

答案 2 :(得分:2)

无需使用chomp方法,因为:

String#chomp返回一个新的String,其中给定的记录分隔符从str的末尾删除(如果存在)。如果$/未从默认的Ruby记录分隔符更改,则chomp也会删除回车符(即将删除“\ n”,“\ r”和“\ r \ n” “)。以下是一些examples

String#to_f返回将str中的前导字符解释为浮点数的结果。超出有效数字末尾的无关字符将被忽略。如果str开头没有有效数字,则返回0.0。此方法永远不会引发异常。以下是to_f的一些examples