2009-05-19 14 views

risposta

9

Usa la seguente:

Transcript cr 

si può utilizzare dopo un valore attraverso una cascata:

Transcript show: 123; cr 
4

Il personaggio in sé può essere raggiunto come Character cr. Quindi, si potrebbe anche fare questo:

Transcript show: 'Bla! , Character cr asString. 

Ma, naturalmente,

Transcript show: 'Bla!' ; cr. 

è il modo più elegante.

+0

Character cr asSymbol * e 'Bla!' <---- chiudi – Iancovici

4

Dalla mia (lunga) esperienza, le fughe di caratteri mancanti sono una delle poche cose che mancano in Smalltalk. Per lo streaming, le soluzioni che utilizzano cr, tab ecc. Sono ok.

Tuttavia, se è necessario un particolare carattere di controllo in una stringa, questo può essere brutto e difficile da leggere (utilizzando "streamContents:" o "withCRs" per aggiungere una nuova riga). In alternativa, potresti voler utilizzare uno dei meccanismi di espansione delle stringhe (non standard). Per esempio, in VisualWorks o Smalltalk/X, è possibile scrivere (se non ricordo male):

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

o anche con printf-come affettare printStrings di un altro oggetto:

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

immagino, ci è qualcosa di simile anche in Squeak e V'Age.

Ma attenzione: queste espansioni vengono eseguite al momento dell'esecuzione. Quindi potresti incontrare una penalità quando li usi intensamente su molti archi.

+0

Il primo funziona a Pharo, il secondo causa un errore, ma potrebbe trattarsi di un bug; ancora investigando ... –

+0

La sanzione può essere mitigata se esprimi l'intenzione di eseguire una sola volta con ['someString con newline e schede' expandMacros] una volta Vedi [Quando torni] (http: //www.cincomsmalltalk. com/userblogs/Travis/blogView? showComments = true & printTitle = When_You_Come_Back & entry = 3346567529) –