我有一个协议(protocol)A
:
protocol A { }
像这样实现协议(protocol) B
有什么区别:
protocol B: A { }
与这样实现相比:
protocol B where Self: A { }
?
我可以用一个做什么,而另一个不能做什么?我会在哪里遇到一个可以通过切换到另一个来解决的问题?
最佳答案
一个区别在于您如何遵守协议(protocol)。
在前一种情况下,符合 B
意味着符合 A
。
struct BImpl: B {} // `A` is implied here
在后一种情况下,对 B
的一致性需要对 A
的一致性,但它不会隐式地创建一个:
struct BImpl: A, B {} // `A` is explicitly required here
关于Swift - 继承协议(protocol)和将 Self 约束到协议(protocol)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229096/