2014-09-19 2 views
1

두 개의 연결 목록 개체를 딥 복사하기 위해 작성한 스몰 토크 코드입니다.하지만이 작업을 수행 할 때 스몰 토크 인터프리터는 다음과 같은 오류가 발생합니다. 처리되지 않은 예외 : 메시지가 이해되지 않음 : nextlink.Smalltalk에서 LinkedList 개체의 딥 복사본은 오류가 발생합니다

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

내 코드의 문제점을 알려주십시오.

+0

어떤 방언/환경 (VW, VA, Dolphin, Newspeak, Pharo, Squeak ...)을 사용하고 있는지 알려주십시오. 또한,'LinkedList >> # dcopy'의 코드를 게시하십시오 (귀하가 사용하는 것으로 가정하십시오). –

답변

1

이것은 VisualWorks입니다. LinkedLists는 내부 시스템 사용에 사용되는 콜렉션이며 일반적인 용도로 사용되지 않습니다. LinkedLists에 추가 된 항목은 Link에서 서브 클래스를 가져야합니다 (또는 nextLink 및 nextLink 구현). SmallInteger는 연결된 목록에 추가 할 수 없습니다. 당신은 이것을 할 수 있습니다 :

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

우리는 일반적으로 스몰 토크에서 링크드리스트를 사용하지 않습니다. 우리는 일반적으로 대신 OrderedCollection을 사용합니다. 연결된 목록이 정말로 필요한 경우 Link의 하위 클래스 인 요소를 추가하십시오.

+0

대단히 감사합니다. @ David Black. 그러나 귀하의 function에 작은 변화가 있습니다. 그것은 LinkValue 값입니다 : 5. LinkValue라는 클래스가 있으며,이 클래스에는 setter에게 값을 설정하는 메서드가 있습니다. – sabarish

+0

위의 코드에서 수정되었습니다. –

관련 문제