Установка символа конца строки для путов - PullRequest
3 голосов
/ 18 мая 2010

У меня есть массив записей, которые я хотел бы напечатать.

Будучи обр массивом, я просто писал:

puts arr

Затем мне нужно было использовать конец строки в формате DOS: \ r \ n, поэтому я написал:

arr.each { |e| print "#{e}\r\n" }

Это работает правильно, но я хотел бы знать, есть ли способ указать, какой формат конца строки использовать, чтобы я мог написать что-то вроде:

$eol = "\r\n"
puts arr

ОБНОВЛЕНИЕ 1

Я знаю, что устанавливает будет использовать правильные окончания строк в зависимости от платформы, на которой он запущен, но мне это нужно, потому что я запишу вывод в файл.

ОБНОВЛЕНИЕ 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 печатает все элементы массива в одну строку, а затем добавляет $ \ , в то время как мне хотелось бы поведение путов: добавление $ \ после каждого элемент массива.
Возможно ли это вообще без использования Array # each?

1 Ответ

6 голосов
/ 18 мая 2010

Переменная Ruby $\ устанавливает разделитель записей для вызовов печати и записи:

>> $\ = '!!!'
=> "!!!"
>> print 'hi'
hi!!!=> nil

В качестве альтернативы вы можете ссылаться на $\ как $OUTPUT_RECORD_SEPARATOR, если вы импортируете английский модуль.


Kernel#puts эквивалентен STDOUT.putsIO.puts «записывает новую строку после каждого элемента, который еще не заканчивается последовательностью новой строки».Так что вам не повезло с чистыми puts для массивов.Однако переменная $, является строкой-разделителем, выводимой между параметрами suck как 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!!!=> nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...