델피치 안의 교체.

5939 단어 Delphi
반복 (Iiterator) 의 역할: 집합 (Collections) 의 모든 요소 (item) 를 옮겨다니다.
delphi 2005 이후에 포...in .. 스트리밍, Set, array, record, Interface,class를 지원합니다.코드의 for 순환을 더욱 간결하게 할 수 있습니다.
     
var

  S: string;

  i: integer;

begin

  for i := 0 to MyStrings.Count-1 do

  begin

    S := MyStrings[i];

    writeln(S);

  end;

end;
 
     
var

  S: string;

begin

  for S in MyStrings do

    writeln(S);

end;
         ,             :
1.       class , interface    record       
2.   class ,interface   record        GetEnumerator  ,            
3.        class , interface    record      。
4.         MoveNext(): boolean; Current:      。
5.MoveNext                   False,    True
6.                -1,   moveNext           。
 
 
type

  {     }

  TRecordEnumerator = record

  private

    FArray: TBytes;

    FIndex: Integer;



    function GetCurrent: Byte;

  public

    function MoveNext(): Boolean;

    property Current: Byte read GetCurrent;

  end;



  {         }

  TRecordCollection = record

  private

    FArray: TBytes;

  public

    function GetEnumerator(): TRecordEnumerator;

  end;



{ TRecordCollection }



function TRecordCollection.GetEnumerator: TRecordEnumerator;

begin

  Result.FArray := FArray;

  Result.FIndex := -1;

end;



{ TRecordEnumerator }



function TRecordEnumerator.GetCurrent: Byte;

begin

  Result := FArray[FIndex];

end;



function TRecordEnumerator.MoveNext: Boolean;

begin

  Inc(FIndex);



  if FIndex >= Length(FArray) then

    Exit(false);



  Exit(true);

end;



var

  LColl: TRecordCollection;

  B: Byte;



begin

  LColl.FArray := TBytes.Create(1, 2, 3, 4, 5, 6);



  for B in LColl do

    WriteLn(B);



  ReadLn;

end.

 
 

좋은 웹페이지 즐겨찾기