delphicode的博客

http://www.cnblogs.com/delphicode/archive/2009/12/09/1620527.html#1721139

中写道:

 

 

 1 function IIF<T>(Condition: Boolean; TrueValue: T;  FalseValue: T): T;
 2 
 3 begin  
 4 
 5   if Condition then    
 6 
 7     result := TrueValue  
 8 
 9   else    
10 
11     result := FalseValue;
12 
13 end;
14 

 

 

注:Delphi 2009\2010 支持泛型,其它版本不支持。

 

真的很方便!不过好像不能直接这样定义函数,只能定义在class/record/interface中,我写了个测试,可以这样来使用:

 

代码
 1 type
 2 
 3 //Delphi IIF
 4   //注:Delphi 2009\2010 支持泛型,其它版本不支持。
 5   DelphiIIF=class
 6   public
 7     class function IIF<T>(Condition: Boolean; TrueValue: T;  FalseValue: T): T;
 8   end;
 9 
10 
11 
12 implementation
13 
14 
15 
16 class function DelphiIIF.IIF<T>(Condition: Boolean; TrueValue: T;  FalseValue: T): T;
17 begin
18   if Condition then
19     result := TrueValue
20   else
21     result := FalseValue;
22 end;
23 
24 

 

 

然后就可以这样来调用了:

 

ShowMessage(DelphiIIF.IIF(True,'OK','ERROR'));
ShowMessage(IntToStr(DelphiIIF.IIF(True,
1,2)));

 

 

对泛型研究不多,还请delphicode指正  :-)

posted on 2009-12-25 14:27  garfieldtom  阅读(518)  评论(0编辑  收藏  举报