Swift - 继承协议与约束Self与协议之间的差异

问题描述 投票:0回答:1

我有一个协议A

protocol A { }

执行协议B之间有什么区别:

protocol B: A { }

而不是这样实现它:

protocol B where Self: A { }

?

对于一个我不能用另一个做的人,我该怎么办?我可以通过切换到另一个问题来解决我可以修复的问题?

swift generics inheritance protocols generic-constraints
1个回答
4
投票

一个区别在于您如何符合协议。

在前一种情况下,与B的一致性意味着与A的一致性。

struct BImpl: B {} // `A` is implied here

在后一种情况下,与B的一致性要求与A一致,但它并不隐含地创建一个:

struct BImpl: A, B {} // `A` is explicitly required here
© www.soinside.com 2019 - 2024. All rights reserved.