2009-05-19 14 views

Odpowiedz

9

użyć następujących:

Transcript cr 

Można go używać po wartości poprzez kaskadę:

Transcript show: 123; cr 
4

Sama postać może zostać osiągnięty za Character cr. Tak więc, można też to zrobić:

Transcript show: 'Bla! , Character cr asString. 

Ale oczywiście

Transcript show: 'Bla!' ; cr. 

jest bardziej elegancki.

+0

Znak cr asSymbol * i "Bla!" <---- close it – Iancovici

4

Z mojego (długiego) doświadczenia, brakujące znaki ucieczki są jedną z niewielu rzeczy, których brakuje w Smalltalk. W przypadku przesyłania strumieniowego rozwiązania wykorzystujące cr, tab itp. Są w porządku.

Jeśli jednak potrzebujesz konkretnego znaku kontrolnego w ciągu znaków, może to być brzydkie i trudne do odczytania (używając "streamContents:" lub "withCRs", aby dodać nową linię). Alternatywnie możesz użyć jednego z (niestandardowych) mechanizmów rozszerzania ciągów znaków. Na przykład, w VisualWorks lub Smalltalk/X, można napisać (jeśli dobrze pamiętam):

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

lub nawet printf jak krojenie printStrings inny obiekt za:

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

Chyba nie jest podobny do Squeak i V'Age.

Należy jednak pamiętać, że te rozszerzenia są wykonywane w czasie wykonywania. Więc możesz napotkać karę, gdy intensywnie używasz ich na wielu ciągach.

+0

Pierwszy działa w Pharo, drugi powoduje błąd, ale może to być błąd; wciąż badam ... –

+0

Kara może zostać złagodzona, jeśli wyrazisz zamiar wykonania tylko raz za pomocą ['someString with newline i tabs' expandMacros] once See [When you come Back] (http: //www.cincomsmalltalk. com/userblogs/travis/blogView? showComments = true & printTitle = When_You_Come_Back & entry = 3346567529) –