【发布时间】:2014-12-09 01:45:24
【问题描述】:
是否可以要求泛型类型的特定实例化符合 Swift 中的协议?
例如,假设我有一个名为Thing<T> 的泛型类型。我希望Thing<Int> 符合某个协议,而不是Thing<T>。
【问题讨论】:
-
听起来像是你想要的某种巫术
-
Thing<T where if T : A then T : B>;Thing<T where T : B when T : A>;Thing<T where T : A ?? B>那些行不通,但那是你想写的东西,对吗?我认为您现在可以得到的最接近的方法是检查可失败初始化程序中的一致性,并在一致性不符合您的要求时返回 nil。 -
您要的是ConstraintKinds,这是高级类型系统的一个特性。考虑到我们甚至没有常规类型,更不用说类型族了,真的没有办法解决这个问题。
-
我们没有自动协议一致性。如果你实现了所有的方法
-
你想对 Thing
的约束协议做什么?
标签: generics types swift protocols