【发布时间】:2016-07-04 00:38:53
【问题描述】:
我有第一个协议
protocol Prot1
{
}
第二个:
protocol Prot2
{
associatedtype P: Prot1
func doSomething(param: P)
}
如何创建 Prot2 类型的数组?
我试过了:
var myArray = [Prot2]()
但它给了我这个错误:Protocol Prot2 只能用作通用约束,因为它具有 Self 或关联的类型要求
有没有其他方法可以制作模板协议?
编辑:
对不起,如果我迟到了,但我正在测试解决方案。 据我了解类型擦除
AnyProt2<Prot1Type: Prot1>: Prot2
让我有一个数组
[AnyProt2<Prot1Class>]
但我要求一个可以包含各种 AnyProt2 的数组,例如:
[AnyProt2] or [AnyProt2<Prot1>]
我尝试了第二个,但它给了我:
不支持将“Prot1”用作符合协议“Prot1”的具体类型。
在我的上下文中,Prot1 是间隔,Prot2 是一个事件,所以我想拥有和排列不同类型的事件,这些事件可能有不同类型的间隔。 我也想问一下是否可以让Prot1扩展Equatable并在AnyProt2中确认协议。
【问题讨论】:
-
对更新有帮助吗?