一个类如何符合具有协议约束关联类型的协议?

时间:2018-08-16 03:26:51

标签: swift

问题标题很难理解,但是当您查看代码示例时,您会明白我的意思。我试图通过使用协议B作为类型别名来使D类符合协议C。我认为可以,因为B也符合A,这是C中关联类型中定义的约束,但是编译器会抛出错误。我想做的是不可能的吗?

protocol A { }
protocol B: A { }

protocol C {
    associatedtype T: A
}

class D: C {
    typealias T = B
}

注意:如果B是一个类而不是一个协议,则可以使用。

1 个答案:

答案 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())