interface I1 { ... }
interface I2 { ... }
struct List(T) { ... }
如何專門化我的列表以僅對實現 I1和I2的類進行操作?一個接口很容易:專門設計一個模板參數來實現D中的2個接口?
struct List(T : I1)
其他語言。在C#是:
struct List<T> where T : I1, I2
而且在Java中我會說:
class List<T extends I1 & I2>
一個陷阱:我不想要一個如果模板約束,因爲我想從非合理的自動完成最先進的IDE。我認爲D的IDE會做很多事情,比如反向工程模板約束來推導出列表可能的T方法。即使這聽起來不像廉價的性能。
如果約束對於IDE來說不會比任何其他問題更難處理。 – BCS 2010-08-23 03:47:22