2009-03-12 3 views
27

Если я говорюКак добавить дополнительную строку новой строки с помощью «puts», не вставляя символ новой строки в строку?

puts "Hello" 

и решили добавить дополнительный символ новой строки, мне нужно сделать это:

puts "Hello\n" 

Наличие этого символа в строке некрасиво. Есть ли способ сделать это, не загрязняя мою строку?

+5

На самом деле, для того, чтобы добавить добавьте новую строку, вам нужно сделать 'puts 'Hello \ n \ n", так как 'puts' ест первую новую строку. Я предполагаю, что он предполагает, что вы не понимаете, что он автоматически добавит его. –

ответ

37

Просто сделайте другой вызов puts:

puts "Hello" 
puts 
+0

Я пробовал другие примеры без везения, это сработало отлично. –

+1

Мне нужно было добавить строку после puts: 'puts '" ' – cyrilchampier

0

Ну, я не думаю, что явный символ новой строки некрасиво. Ответ mipadi также прекрасен. Чтобы просто добавить другой ответ, сделайте массив строк, затем присоединитесь к aray с помощью новой строки. :)

2

Считаете ли вы, что это выглядит лучше?


puts "Hello"+$/ 

</зло >

2

Причины Рубин использует «\ N» для новой строки потому, что его на основе C. Руби МРТ написана на С и даже JRuby написана на Java, которая основана на C++, который основан на C ... вы получаете идею! Таким образом, все эти языки C-стиля используют «\ n» для новой строки.

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

20
puts "Hello","" 
+2

Умный, но мешает читаемости. Дополнительные наборы намного легче понять. – Dennis

+0

@ Dennis Я категорически не согласен с тем, что дополнительные посты почти похожи на ошибку. С этим это, возможно, намного более чистый код. Сразу же после помещения строки вы помещаете пустую строку, которая в свою очередь возвращает карету. – djowinz

+0

@djowinz Проблема с этим подходом заключается в том, что не очевидно, что он делает, поскольку он редко используется. Средний программист Ruby не знает, что 'puts' принимает аргумент массива и каков будет результат. Но на любом языке довольно очевидно, что дважды будет использоваться метод идиоматической печати. – Dennis

1

вы можете просто написать

p "Hello" 
p 

Это должно работать, а если вы хотите, чтобы держать его коротким и простым

+0

'p' не даст новую строку. Также не будет 'p" "', поскольку он будет отображаться '' '' 'потому что' p' дает результат вызова '.inspect' в строке вместо' .to_s'. См. Http://stackoverflow.com/questions/1255324/p-vs-puts-in-ruby – Magne

3

Я часто добавлять константу в рубин, чтобы содержать эти символы

NEW_LINE = "\n" 

puts "Hello" + NEW_LINE 

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

0

Что вы хотите исправлено: вход для сценария:

puts "Hello there" 
puts "Goodbye" 

Выход из сценария:

Hello thereGoodbye 

Устранена проблема: Вход для сценария:

puts "Hello there" 
puts 
puts "Goodbye" 

Выходной от скрипта:

Hello there 
Goodbye 
+0

Вы должны отредактировать свой ответ и упростить его понимание. –

+0

Если я что-то не понимаю, вы в основном сказали то же самое, что и принятый ответ, который был опубликован много лет назад. Есть ли что-нибудь о вашем ответе, которое добавляет к существующему? – skrrgwasme

-2

Один простых и читаемый подход использовать кавычки, чтобы отделить ссылку новой строки от остальной части вашей продукции, но и сохранить его в той же строке:

puts "Add an extra newline" "\n\n"

+1

Любопытно, почему это сбивает голоса. Может быть, комментарий почему? – Toby