为什么Ruby的“ gets”包括结尾的换行符?

| 我永远不需要从
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
,等等。在这些情况下,您会看到(微小的)通过不砍性能改善。     

要回复问题请先登录注册