본문 바로가기

Delphi/끄적이기

제네릭을 사용한 IfThen으로 한번에 해결하기

제네릭을 사용하여 다양한 유형의 타입으로 사용이 가능합니다.

type
  IIF = class
    class function Cast<T>(AExpression: Boolean; const ATrue, AFalse: T): T; static;
  end;
  
implementation

{ IIF }
class function IIF.Cast<T>(AExpression: Boolean; const ATrue, AFalse: T): T;
begin
  if AExpression then
    Result := ATrue
  else
    Result := AFalse;
end;

 

Ex)

procedure TForm1.Button1Click(Sender: TObject);
var
  My1: TMyRec;
  My2: TMyRec;
  My3: TMyRec;
begin
  My1.Index := 1;
  My1.Name := 'Test1';
  My2.Index := 2;
  My2.Name := 'Test2';
  My3 := IIF.Cast<TMyRec>(False, My1, My2); //Record도 사용 가능
  
  ShowMessage(My3.Name);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  //다양한 타입 사용 가능
  ShowMessage(IIF.Cast<string>(True, '1', '2'));
  ShowMessage(IntToStr(IIF.Cast<Integer>(True, 1, 2)));
end;

 

반응형