SmallTalk - 使用Transcript打印OrderedCollection对象的内容

时间:2014-10-15 17:52:57

标签: smalltalk pharo

|oc|
oc := OrderedCollection new. 
oc add: 2.
oc add: #(4 9).
oc Transcript show: self; cr.

在Pharo中运行以下代码后,我收到消息:

MessageNotUnderstood:OrderedCollection>>转录

用'oc'替换'self'时,我仍然遇到同样的错误。我正在寻找一种使用Transcript输出集合的方法。

为什么Transcript不能成为我代码的接收者?

3 个答案:

答案 0 :(得分:2)

请记住object message: parameter语法:您尝试将Transcript消息发送到oc对象,然后将show:消息发送到该对象返回的对象,使用self参数。

您真正想要做的是询问Transcript对象show:您的oc对象。因此,请执行此操作:将Transcript消息show:oc作为参数发送Transcript show: ocdo:。这将显示集合的字符串表示。

如果您要打印集合的每个成员(而不是打印集合本身),您应该使用oc do: [ :element | Transcript show: element ]方法迭代它们:oc := OrderedCollection new. oc add: 2. oc add: #(4 9). Transcript show: 'Show the collection:'; cr. Transcript show: oc; cr. Transcript show: 'Show each element:'; cr. oc do: [ :element | Transcript show: element; cr ]. 。在这里打印每个集合的成员字符串表示。

Show the collection:
an OrderedCollection(2 #(4 9))
Show each element:
2
#(4 9)

给出这个输出:

{{1}}

答案 1 :(得分:1)

此外:

oc do: [ :each | Transcript show: each; cr ]

答案 2 :(得分:0)

有点短:

oc do: [:each | each logCr ]