6、多模板類型分別約束條件
有兩個模板類型T1、T2,要使用不同的約束分別約束兩個模板類型,可以使用以下方法:
1type
2 TGenericsClass<T: class; T1: TList> = class // 注意在此進行約束,用“;”將兩個模板類型分開進行分別約束
3 private
4 end;
7、嵌套約束條件
Delphi2009的泛型約束條件對嵌套約束條件處理的很好,如:
1TFelix<T> = class
2 public
3
4 end;
5
6 TGenericsClass<T: class; T1: TFelix<T>> = class // 注意在此進行約束,用“;”將兩個模板類型分開進行分別約束
7 private
8 end;
十、關於特化和偏特化
謝謝網友“裝配腦袋”的提醒,我試了很多方法,都沒有跡象表明D2009支持C++中模板的特化和偏特化,或者D2009用其他形式的語法表示特化與偏特化,導致我沒有試驗出來。
十一、總結
總體上來說,D2009從泛型的角度出發,做得已經非常不錯了,已經非常接近C#。甚至,D2009還提供類似於C#的關鍵字“default”,來獲取泛型類型T的默認值(值類型置0,引用類型為空指針)。
在接下來的章節裡,我會向大家介紹D2009的其他新體驗,如:匿名函數和反射(比RTTI更強大)的支持。