{ İsmail Kocacan TPredicate Kullanımı } unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TStringListHelper = class helper for TStringList function Where(Condition: TPredicate): TStringList; end; TForm1 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var AList: TStringList; begin AList := TStringList.Create; AList.Add('Ali'); AList.Add('Veli'); AList.Add('Deli'); AList.Add('İsmail'); Memo1.Lines.AddStrings( AList.Where( function(Arg: Integer): Boolean begin Result := Arg > 3; end ) ); AList.Free; end; { TStringListHelper } function TStringListHelper.Where(Condition: TPredicate ): TStringList; var I: Integer; NewList: TStringList; begin NewList := TStringList.Create; for I := 0 to Self.Count - 1 do begin if Condition(Length(Self[I])) then NewList.Add(Self[I]); end; Result := NewList; end; end.
Yukarıdaki örnekte TStringList'e Where isminde bir extension(uzanım) fonksiyon yazdık.
Bu fonksiyon TStringList de bulunan,karakter sayısı 3 den büyük elemanları, yeni bir liste olarak geriye döndürür.
C# Predicate Kullanımı Bknz : http://msdn.microsoft.com/en-us/library/bfcke1bz.aspx
C# Extension Method Kullanımı Bknz : http://msdn.microsoft.com/en-us/library/bb383977.aspx
Hiç yorum yok:
Yorum Gönder