상세 컨텐츠

본문 제목

익명 메소드를 이용한 Iteration 구현

프로그래밍/Delphi

by ryujt 2012. 11. 19. 02:10

본문

익명 메소드를 이용해서 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: 라인에서처럼 반복하는 동안 실행해야 하는 코드만 변경해서 사용하시면 됩니다.  아래 링크에서는 반복하는 동안 멈추기 위한 메소드를 같이 제공하고 있습니다.


실제 코드는 아래의 링크를 참고하시기 바랍니다.







관련글 더보기