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
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
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)));
ShowMessage(IntToStr(DelphiIIF.IIF(True,1,2)));
对泛型研究不多,还请delphicode指正 :-)