我看到人们使用以下代码:
gets.chomp.to_i
或
gets.chomp.to_f
我不明白为什么,这些行的结果总是与chomp
之后没有gets
的结果相同。
gets.chomp.to_i
是否真的有必要,或gets.to_i
是否足够?
答案 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)