在协议

时间:2016-08-31 15:00:24

标签: swift generics protocols associated-types

我想定义一个Swift协议,它也是一个具有符合另一个特定协议的元素的序列。理想情况下,我想写这样的东西:

protocol A { 
  var container: Container { get }
}

protocol Container: Sequence where Iterator.Element: A {
  ...
}

不幸的是,Swift目前还没有允许协议定义中的where子句(并且它也不允许使用具有相关类型的协议作为类型约束)。有什么办法我还能这样做吗?容器(最好是A)应该能够有不同的支持实现。

编辑:我知道我可以将序列移动到Container的类型擦除属性,这将解决所有问题,但代价是引入不必要的词汇开销。尽管如此,我仍然对一个没有作弊的解决方案感兴趣。它离开了类型系统。

0 个答案:

没有答案
相关问题