익명 메소드를 이용해서 LinkeList로 구현 된 데이터 구조에 대한 Iteration을 작성 해보았습니다.
우선, 익명 메소드의 타입을 선언합니다.
type TSimpleIterateProcedure = reference to procedure(ALinkedListNode:TLinkedListNode);
우리가 작성하는 클래스는 TLinkedList라고 했을 때, Iterate 메소드를 아래와 같이 구현합니다.
procedure TLinkedList.Iterate(AProcedure: TSimpleIterateProcedure); ... begin Current := Head; while Current <> Tail do begin AProcedure(Current); Current := Current.RightNode; end; end;
사용법을 보이기 위해서, 메모 콤포넌트에 각 노드들의 이름을 표시한다고 가정하겠습니다. 소스 코드는 다음과 같습니다.
procedure TfmMain.FormCreate(Sender: TObject); begin LinkedList.Iterate( procedure (ALinkedListNode:TLinkedListNode) begin Memo1.Lines.Add(ALinkedListNode.Name); end ); end;
모든 라인은 언제나 동일한 형태로 사용되며, 5: 라인에서처럼 반복하는 동안 실행해야 하는 코드만 변경해서 사용하시면 됩니다. 아래 링크에서는 반복하는 동안 멈추기 위한 메소드를 같이 제공하고 있습니다.
실제 코드는 아래의 링크를 참고하시기 바랍니다.
2013년 1월 9일 PM 3시에 온라인 강의 합니다 - ffmpeg for Delphi (0) | 2013.01.05 |
---|---|
델파이에서 에어로 끄고 켜기 (0) | 2013.01.05 |
Interlocked Singly Linked Lists for Delphi (0) | 2012.10.19 |
Real Grid Plus - 리얼 그리드가 새제품으로 출시된다고 합니다. (0) | 2012.09.07 |
오브젝트 파스칼 책을 찾는 분들에게 (2) | 2012.09.05 |