我有一系列想要打印的条目。
Being arr数组,我只是用来写:
puts arr
然后我需要使用DOS格式的行尾:\r\n,所以我写道:
arr.each { |e| print "#{e}\r\n" }
这工作正常,但我想知道是否有一种方法可以指定要使用的行尾格式,以便我可以编写如下内容:
$eol = "\r\n"
puts arr
UPDATE 1
我知道puts将根据运行的平台使用正确的行结尾,但我需要这个,因为我会将输出写入文件。
UPDATE 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
print将所有数组项打印在一行上,然后添加$\,虽然我想要 put 的行为:添加$\在数组的每个项目之后。
不使用 Array#each 是否可以实现这一点?
Ruby 变量$\
将为打印和写入调用设置记录分隔符:
>> $\ = '!!!'
=> "!!!"
>> print 'hi'
hi!!!=> nil
或者您可以参考$\
as $OUTPUT_RECORD_SEPARATOR
如果你导入English http://stdlib.rubyonrails.org/libdoc/English/rdoc/index.html module.
Kernel#puts
相当于STDOUT.puts
; and IO.puts
“在每个尚未以换行符序列结尾的元素后面写入换行符”。所以你对 pure 不走运puts
对于数组。但是,那$,
变量是参数之间的分隔符字符串输出suck asKernel#print
and 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!!!=> nil
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)