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中,我写了个测试,可以这样来使用:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
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指正 :-)