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

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

gets.chomp.to_i 

要么

 gets.chomp.to_f 

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

gets.chomp.to_i真的有必要,还是gets.to_i就够了?

没有必要使用chomp方法,因为:

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

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

从String#to_i的文档:

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

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

超出有效数字末尾的无关字符将被忽略,这将包括换行符。 所以没有必要使用chomp

我认为它的工作方式相同,所以如果要立即执行to_ito_f ,则不需要获取chomp

在实践中,我从来没有看到过引发的错误或不同的行为,因为他们将chomp排除在外。

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