new line in squeak

↘锁芯ラ 提交于 2019-12-23 09:58:27

问题


i want to do something like this: Transcript show: '\n'. how?


回答1:


Use the following:

Transcript cr

You can use it after a value via a cascade:

Transcript show: 123; cr



回答2:


From my (long) experience, missing character escapes are one of the few things that are missing in Smalltalk. For streaming, solutions using cr, tab etc. are ok.

However, if you need a particular control character in a string, this may be ugly and hard to read (using "streamContents:", or "withCRs" to add a newLine). Alternatively, you may want to use one of the (non-standard) string expansion mechanisms. For example, in VisualWorks or Smalltalk/X, you can write (if I remember correctly):

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

or even with printf-like slicing of other object's printStrings:

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

I guess, there is something similar in Squeak and V'Age as well.

But, be aware: these expansions are done at execution time. So you may encounter a penalty when heavily using them on many strings.




回答3:


The character itself can be reached as Character cr. So, you could also do this:

Transcript show: 'Bla! , Character cr asString.

But of course,

Transcript show: 'Bla!' ; cr.

is way more elegant.




回答4:


What I do as a convenience is add a method "line" to the String class:

line
    ^self, String lf

Then you can just say obj showSomething: 'Hello world!' line.

Or call it newline, endl, lf, etc...



来源:https://stackoverflow.com/questions/881666/new-line-in-squeak

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!