问题标题很难理解,但是当您查看代码示例时,您会明白我的意思。我试图通过使用协议B作为类型别名来使D类符合协议C。我认为可以,因为B也符合A,这是C中关联类型中定义的约束,但是编译器会抛出错误。我想做的是不可能的吗?
protocol A { }
protocol B: A { }
protocol C {
associatedtype T: A
}
class D: C {
typealias T = B
}
注意:如果B是一个类而不是一个协议,则可以使用。
答案 0 :(得分:0)
protocol A { }
protocol B: A { }
protocol C {
func f1(something : A)
}
class D : C {
func f1(something: A) { }
}
class X : B {}
let d1 = D()
d1.f1(something: X())