Ruby 是否有必要使用';咀嚼';在使用“to_i”或“to_f”之前?

Ruby 是否有必要使用';咀嚼';在使用“to_i”或“to_f”之前?,ruby,Ruby,我看到人们使用以下代码: gets.chomp.to_i 或 我不明白为什么,当这些行的结果总是与get之后没有chomp时相同 gets.chomp.to_i真的有必要吗,或者gets.to_i就足够了吗?我认为这两种方法都是一样的,所以如果你要立即执行to_i或to_f,那么在gets之后就不需要chomp 在实践中,我从来没有看到过因为把chomp放在行外而引起的错误或不同的行为 当我看到答案中使用它时,我发现它令人分心,而且完全没有必要使用它。它不会增加“样式”,正如@TheTinMa

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

gets.chomp.to_i

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


gets.chomp.to_i
真的有必要吗,或者
gets.to_i
就足够了吗?

我认为这两种方法都是一样的,所以如果你要立即执行
to_i
to_f
,那么在
gets
之后就不需要
chomp

在实践中,我从来没有看到过因为把
chomp
放在行外而引起的错误或不同的行为


当我看到答案中使用它时,我发现它令人分心,而且完全没有必要使用它。它不会增加“样式”,正如@TheTinMan所说,它浪费了CPU周期。

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

String#chomp
返回一个新字符串,其中给定的记录分隔符已从str的末尾移除(如果存在)。如果未更改默认Ruby记录分隔符的
$/
,则
chomp
还将删除回车字符(即,它将删除“\n”、“\r”和“\r\n”)。这里有一些


String#to_f
返回将
str
中的前导字符解释为浮点数的结果。超过有效数字结尾的无关字符将被忽略。如果
str
开头没有有效数字,则返回0.0。此方法从不引发异常。以下是文档中有关以下内容的部分:

返回将str中的前导字符解释为 整数基数(介于2和36之间)。过去的外来人物 忽略有效数字的结尾。如果在上没有有效的数字 返回str的开头0

行为方式相同,当然不包括基数


超过有效数字结尾的无关字符将被忽略,这将包括换行符。因此,无需使用
chomp

这就是答案吗?:)我在创建答案时被打断了。所以在本例中,您是说,但在什么情况下,您需要在将其转换为数字之前调用chomp?还是应该如此在任何情况下,将字符串强制为数字时,实际上都不需要使用
.chomp
。我想不出在任何情况下,给定一个字符串,您可以使用
.to_I
或甚至
内核#Float
或其他需要的、有用的或真正需要的方法。正在等待您进行编辑,以便我可以+1。厌倦了打刷新。:)我可能会编辑这个问题,问“在调用
.to\u I
之前是否有必要使用
.chomp
。(四个)中没有一个)到目前为止的答案解决了这个问题。vgoff想知道为什么在不需要的时候经常使用
chomp
。另外,请看他的评论。我怀疑这与人们经常看到
self.map…
,而
map…
就足够了:风格还是无知。+1@CarySwoveland:完全正确。我认为人们这样做是因为你还没有停下来思考他们在做什么。在IRB中快速测试将确认
chomp
浪费了CPU时间。:)有人将标题改为“我需要做”,我已经知道答案。在我比较了1.8.6中IRB中的结果后,我没有以这种方式使用
.chomp
。为此编写了测试,这样我就知道我已经完成了如果在使用
to_i
之前需要进行验证,那么它将捕获非整数值,而
chomp
根本不需要,因此它在代码中的位置是h因为没有实用价值。
gets.chomp.to_f