我有一个协议A
:
protocol A { }
像这样实现协议B
之间有什么区别:
protocol B: A { }
相对于这样实现它:
protocol B where Self: A { }
?
我对另一个不能做什么?我会在哪里遇到问题,而我可以通过将其切换到另一个解决此问题?
答案 0 :(得分:4)
一个区别是遵守协议的方式。
在前一种情况下,符合B
意味着符合A
。
struct BImpl: B {} // `A` is implied here
在后一种情况下,要符合B
,就必须符合A
,但它不会隐式创建一个:
struct BImpl: A, B {} // `A` is explicitly required here