从Smalltalk中的OrderedCollection打印
我对Smalltalk相当陌生,我一直在研究如何从堆栈中打印元素。我有两个类,一个是使用OrderedCollection创建堆栈的类,它可以工作,另一个是对象子类。对于第二个类,我有两个实例变量name和weight(使用set和get方法)。我需要再做两个方法print和printSpecial。使用get-from-name方法将名称和权重打印输出到同一行的成绩单,但不能使用get-from-weight方法。PrintSpecial与print类似,但重量必须小于100。我试过做打印和打印,但没办法。以下是我到目前为止的情况。任何帮助都将不胜感激从Smalltalk中的OrderedCollection打印,smalltalk,Smalltalk,我对Smalltalk相当陌生,我一直在研究如何从堆栈中打印元素。我有两个类,一个是使用OrderedCollection创建堆栈的类,它可以工作,另一个是对象子类。对于第二个类,我有两个实例变量name和weight(使用set和get方法)。我需要再做两个方法print和printSpecial。使用get-from-name方法将名称和权重打印输出到同一行的成绩单,但不能使用get-from-weight方法。PrintSpecial与print类似,但重量必须小于100。我试过做打印和打
name: a
name := a
name
^name
print
[ Transcript
show: weight;
show: name;
cr ]
printSpecial
[ weight <= 100 ]
whileTrue: [ Transcript
show: weight;
show: name;
cr ]
name:a
名称:=a
名称
^名字
打印
[发言稿]
显示:重量;
显示:名称;
[铬]
特殊印刷品
[weight您的print
和printSpecial
方法都将其主体括在方括号中。您应该将其删除。尝试:
print
Transcript
show: weight;
show: name;
cr
printSpecial
weight <= 100 ifTrue: [
Transcript
show: weight;
show: name;
cr]
这样,如果您以后决定改进print
,则无需将改进内容复制到printspect
最后,您说您有这些对象的集合,因此您应该有一些方法来枚举它们(例如,通过do:
)因此,如果实际请求包括打印它们,那么您应该在元素类中实现print
和printspect
,然后在堆栈
类中实现相同的消息
Stack >> print
collection do: [:elem | elem print]
Stack >> printSpecial
collection do: [:elem | elem printSpecial]
我假设保存元素的实例变量名为collection
甚至更好。您可以在堆栈中实现do:
,然后使用self-do:
,而不是像我上面所做的那样使用collection-do:
Stack >> do: aBlock
collection do: aBlock
然后
Stack >> print
self do: [:elem | elem print]
Stack >> printSpecial
self do: [:elem | elem printSpecial]
您的print
和printSpecial
方法都将它们的主体括在方括号中。您应该删除它们。请尝试:
print
Transcript
show: weight;
show: name;
cr
printSpecial
weight <= 100 ifTrue: [
Transcript
show: weight;
show: name;
cr]
这样,如果您以后决定改进print
,则无需将改进内容复制到printspect
最后,您说您有这些对象的集合,因此您应该有一些方法来枚举它们(例如,通过do:
)因此,如果实际请求包括打印它们,那么您应该在元素类中实现print
和printspect
,然后在堆栈
类中实现相同的消息
Stack >> print
collection do: [:elem | elem print]
Stack >> printSpecial
collection do: [:elem | elem printSpecial]
我假设保存元素的实例变量名为collection
甚至更好。您可以在堆栈中实现do:
,然后使用self-do:
,而不是像我上面所做的那样使用collection-do:
Stack >> do: aBlock
collection do: aBlock
然后
Stack >> print
self do: [:elem | elem print]
Stack >> printSpecial
self do: [:elem | elem printSpecial]
谢谢,这帮了大忙。谢谢,这帮了大忙。