我有第一个协议。
第二个问题:
但是它给我这个错误:协议Prot2只能被用作通用约束,因为它有Self或关联类型的要求 还有其他方法可以创建模板协议吗? 编辑: 抱歉我晚了,但我正在测试解决方案。据我所知,类型抹消
我尝试了第二种方法,但它给了我以下错误信息: “Using 'Prot1' as a concrete type conforming to protocol 'Prot1' is not supported.”。
在我的上下文中,Prot1代表一个区间(Interval),而Prot2代表一个事件(Event),所以我希望拥有一个数组,其中包含不同类型的事件,这些事件可能具有不同类型的区间。 我还想问一下是否可以使Prot1扩展Equatable,并在AnyProt2中确认该协议。
protocol Prot1
{
}
第二个问题:
protocol Prot2
{
associatedtype P: Prot1
func doSomething(param: P)
}
如何创建一个类型为Prot2的数组?
我尝试过:
var myArray = [Prot2]()
但是它给我这个错误:协议Prot2只能被用作通用约束,因为它有Self或关联类型的要求 还有其他方法可以创建模板协议吗? 编辑: 抱歉我晚了,但我正在测试解决方案。据我所知,类型抹消
AnyProt2<Prot1Type: Prot1>: Prot2
让我用一个数组来存储
[AnyProt2<Prot1Class>]
但我想要一个能够包含各种 AnyProt2 类型的数组,就像这样:
[AnyProt2] or [AnyProt2<Prot1>]
我尝试了第二种方法,但它给了我以下错误信息: “Using 'Prot1' as a concrete type conforming to protocol 'Prot1' is not supported.”。
在我的上下文中,Prot1代表一个区间(Interval),而Prot2代表一个事件(Event),所以我希望拥有一个数组,其中包含不同类型的事件,这些事件可能具有不同类型的区间。 我还想问一下是否可以使Prot1扩展Equatable,并在AnyProt2中确认该协议。