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