在使用`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_i
或to_f
,则不需要获取chomp
。
在实践中,我从来没有看到过引发的错误或不同的行为,因为他们将chomp
排除在外。
当我看到它在答案中使用时,我发现它会分散注意力,并且完全没有必要。 它没有增加“风格”,正如@TheTinMan所说,它浪费了CPU周期。