在smalltalk中,LinkedList对象的深层复制会产生错误

时间:2014-09-19 22:51:49

标签: functional-programming smalltalk

这是我写入深度复制两个linkedlist对象的smalltalk代码。但是当我这样做时,Small talk解释器会引发一个错误,指出:未处理的异常:消息未理解:nextlink。

list1 add:2.
list2 :=list1 dcopy.
list1 ==list2.

请告诉我我的代码有什么问题。

1 个答案:

答案 0 :(得分:1)

这是VisualWorks。 LinkedLists是用于内部系统使用的集合,不适用于一般用途。添加到LinkedLists中的项必须是Link的子类(或实现nextLink和nextLink :)。您无法将SmallInteger添加到链接列表中。你可以这样做:

  LinkedList new
     add: (LinkValue value: 5);
     add: (LinkValue value: 7)

我们通常不会在Smalltalk中使用链接列表。我们通常使用OrderedCollection。如果您确实需要链接列表,请添加作为链接子类的元素。