новая линия в писк - PullRequest
5 голосов
/ 19 мая 2009

я хочу сделать что-то вроде этого: расшифровка стенограммы: '\ n'. как?

Ответы [ 4 ]

10 голосов
/ 19 мая 2009

Используйте следующее:

Transcript cr

Вы можете использовать его после значения через каскад:

Transcript show: 123; cr
4 голосов
/ 11 мая 2011

По моему (долгому) опыту, пропущенные побеги персонажа - одна из немногих вещей, которые отсутствуют в Smalltalk. Для потоковой передачи хорошо подходят решения, использующие cr, tab и т. Д.

Однако, если вам нужен определенный управляющий символ в строке, это может быть некрасивым и трудным для чтения (используя «streamContents:» или «withCRs» для добавления newLine). В качестве альтернативы вы можете использовать один из (нестандартных) механизмов расширения строк. Например, в VisualWorks или Smalltalk / X вы можете написать (если я правильно помню):

'someString with newline<n>and<t>tabs' expandMacros

или даже с printf-подобной нарезкой printStrings другого объекта:

'anotherString<n><t>with newlines<n>and<t>tabs and<p>' expandMacrosWith:(Float pi)

Полагаю, что-то похожее есть и в Squeak и V'Age.

Но учтите: эти расширения выполняются во время выполнения. Таким образом, вы можете столкнуться со штрафом при интенсивном использовании их на многих строках.

4 голосов
/ 21 мая 2009

Сам персонаж может быть достигнут как Character cr. Итак, вы также можете сделать это:

Transcript show: 'Bla! , Character cr asString.

Но, конечно же,

Transcript show: 'Bla!' ; cr.

намного элегантнее.

0 голосов
/ 17 апреля 2018

Для удобства я добавляю метод "line" в класс String:

line
    ^self, String lf

Тогда вы можете просто сказать obj showSomething: 'Hello world!' line.

Или назовите это символом новой строки, endl, lf и т. Д ...

...