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