我正在制作带有pharo smalltalk的链接列表结构,而我正在尝试打印我的列表以进行概述,我使用过' Transcript show:'方法,但它没有工作它打印"元素" (转录本中列表中对象的名称),当我在工作区中单独使用它来打印' 3'或者'你好'例如,它的工作完美。我已经阅读了很多类似的主题,但它并没有解决我的问题: 这是我的代码:
printList
|current|
current := Element newElement: first.
[ current == nil ] whileFalse: [ Transcript show: (current getValue); cr.
current := current getNext ].
谢谢! :)
答案 0 :(得分:2)
看起来您的代码正在运行,并且当它尝试将元素打印到Transcript时,它调用Element>> asString。由于您的对象没有实现此方法,因此它会回退到继承的Object>> asString方法,该方法试图变得聪明并使用生成“元素”的默认模式。
解决方案很简单 - 只需在Element类中自己实现asString方法:
asString
^'Hello I am an Element'
你可以比这更聪明。您通常希望使输出具有唯一可识别性。如果您的Element类具有'name'实例变量,您可以使用它,例如:
asString
^(name ifNil: ['(empty)']), ' Element'
这将打印如下内容:
MyName元素