问题描述
|
我永远不需要从
gets
得到的结尾换行符。一半的时间我忘了to1ѭ,这真是太痛苦了。
为什么在那儿?
解决方法
类似于
puts
(听起来类似),它被设计为使用\\n
字符与线条一起使用。
“ 0”带有一个可选参数,用于“拆分”输入(或“读”直到到达),默认为特殊的全局变量“ 5”,默认情况下包含“ 3”。
gets
是读取流的非常通用的方法,并包含此分隔符。如果不这样做,部分流内容将丢失。
, var = gets.chomp
这一切都为您服务。
, 如果查看IO#gets
的文档,您会注意到该方法采用可选参数sep
,默认值为$/
(输入记录分隔符)。您可以决定将输入分割为换行以外的其他内容,例如段落(\“零长度分隔符一次读取输入的段落(在输入的单独段落中连续两个换行符)\”):
>> gets(\'\')
dsfasdf
fasfds
dsafadsf #=> \"dsfasdf\\nfasfds\\n\\n\"
, 从性能的角度来看,更好的问题是“为什么要摆脱它?”。费用不算高,但是在后台您必须付费才能截断返回的字符串。尽管您可能从未遇到过需要的情况,但您肯定有很多不关心的情况-gets s; puts stuff() if s =~ /y/i
,等等。在这些情况下,您会看到(微小的)通过不砍性能改善。