向协议var添加两个约束

Luk*_*uka 6 swift swift3

我有以下swit代码,我无法让它编译

public protocol A {}
public protocol A2 {}

public protocol B {
    var props: A { get }
}

public protocol C : B {
    var props: A2 { get }
}


struct D :  A,A2 {
}


struct Yo : C {
    var props: D
}
Run Code Online (Sandbox Code Playgroud)

我要做的是将两个类型约束添加到var"props"中:A作为协议的一部分BA2作为协议的一部分C.

当我尝试在结构中实现这些协议时,C编译器不会将其视为有效

Mat*_*ish 0

如果我理解正确的话,var props需要struct Yo遵守两个协议。

您可以简单地通过以下方式执行此操作:

public protocol A {}
public protocol A2 {}

struct D :  A,A2 {
}

struct Yo {
    var props: D
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么你需要协议 C 和 B,因为它们为 struct Yo 而不是 var props 添加了约束