成绩单显示不起作用

时间:2016-02-08 14:53:15

标签: smalltalk pharo

我正在制作带有pharo smalltalk的链接列表结构,而我正在尝试打印我的列表以进行概述,我使用过' Transcript show:'方法,但它没有工作它打印"元素" (转录本中列表中对象的名称),当我在工作区中单独使用它来打印' 3'或者'你好'例如,它的工作完美。我已经阅读了很多类似的主题,但它并没有解决我的问题: 这是我的代码:

    printList
     |current|
     current := Element newElement: first.
     [ current  == nil ] whileFalse: [ Transcript show: (current getValue); cr.
                                        current := current getNext ].

谢谢! :)

1 个答案:

答案 0 :(得分:2)

看起来您的代码正在运行,并且当它尝试将元素打印到Transcript时,它调用Element>> asString。由于您的对象没有实现此方法,因此它会回退到继承的Object>> asString方法,该方法试图变得聪明并使用生成“元素”的默认模式。

解决方案很简单 - 只需在Element类中自己实现asString方法:

asString
    ^'Hello I am an Element'

你可以比这更聪明。您通常希望使输出具有唯一可识别性。如果您的Element类具有'name'实例变量,您可以使用它,例如:

asString
    ^(name ifNil: ['(empty)']), ' Element'

这将打印如下内容:

  

MyName元素