0

我有一个协议A

protocol A { }

像这样实现协议有什么区别B

protocol B: A { }

而不是像这样实现它:

protocol B where Self: A { }

?

我可以用一个做什么而我不能用另一个做什么?我会在哪里遇到可以通过将其切换到另一个来解决的问题?

4

1 回答 1

4

一个区别在于您如何遵守协议。

在前一种情况下,符合B意味着符合A

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

在后一种情况下,符合 toB需要符合 to A,但它不会隐式创建一个:

struct BImpl: A, B {} // `A` is explicitly required here
于 2018-09-07T20:57:03.370 回答