2014-09-19 40 views
1

这是我写入深层复制两个链表对象的小代码。但是当我这样做时,小谈会解释器引发错误,指出:未处理的异常:消息未理解:nextlink。在小问题中,LinkedList对象的深层副本给出错误

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

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

+0

请告诉我们您使用的方言/环境(大众,VA,海豚,Newspeak,Pharo,Squeak ...)。另外,请发布'LinkedList >>#dcopy'的代码(假设您使用的是)。 – 2014-09-20 07:00:25

回答

1

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

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

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

+0

非常感谢@大卫·布莱克。但是你的函数有一个小的改变。它是LinkValue值:5。有一个名为LinkValue的类,它具有设置者设置值的方法。 – sabarish 2014-09-21 15:30:39

+0

更正上面的代码。 – 2014-09-21 22:13:39