我有一系列的条目我想打印。
作为数组的一部分,我曾经只是写:
puts arr然后,我需要使用DOS格式的行尾:\r\n,所以我写道:
arr.each { |e| print "#{e}\r\n" }这是正确的,但我想知道是否有一种方法可以指定使用哪种行结束格式,这样我就可以编写如下内容:
$eol = "\r\n"
puts arr更新1
我知道puts将根据运行的平台使用正确的行尾,但我需要这样做,因为我会将输出写入文件。
更新2如马克所建议的,设置$_是有用的。不管怎样,它只适用于_print。例如,
irb(main):001:0> a = [1, 2, 3]
=> [1, 2, 3]
irb(main):002:0> $\ = "\r\n"
=> "\r\n"
irb(main):003:0> print a
123
=> nil
irb(main):004:0> puts a
1
2
3
=> nil打印单行上的所有数组项,然后添加$_,而我想要puts的行为:在数组的每个项之后添加$_。
如果不使用Array#each,这是可能的吗?
发布于 2010-05-18 10:42:24
Ruby变量$\将为要打印和写入的调用设置记录分隔符:
>> $\ = '!!!'
=> "!!!"
>> print 'hi'
hi!!!=> nil或者,如果您导入$\模块,您可以将英语称为$OUTPUT_RECORD_SEPARATOR。
Kernel#puts等同于STDOUT.puts;IO.puts“在没有以换行符结尾的每个元素之后写一个换行符”。所以,对于数组来说,纯粹的puts是不走运的。但是,$,变量是Kernel#print和Array#join参数之间的分隔字符串输出。因此,如果您能够处理调用print arr.join,这可能是您正在做的事情的最佳解决方案:
>> [1,2,3].join
=> "123"
>> $, = '---'
=> "---"
>> [1,2,3].join
=> "1---2---3"
>> $\ = '!!!'
=> "!!!"
>> print [1,2,3].join
1---2---3!!!=> nilhttps://stackoverflow.com/questions/2856038
复制相似问题