This question already has an answer here:
Reasons to include function in protocol definition vs. only defining it in the extension?
(1个答案)
两年前关闭。
我是否:
protocol SomeProtocol{}

extension SomeProtocol {
  func sayHi(toUser user: String) {
    print("Hi \(user)")
}

或者
protocol SomeProtocol{
  func sayHi(toUser user: String)
}

extension SomeProtocol {
  func sayHi(toUser user: String) {
    print("Hi \(user)")
}

我可以在课堂上遵守这个协议:
class MyClass: SomeProtocol {
  sayHi(toUser: "Minion")
}

无论我使用方法1还是方法2,输出都是:Hi Minion。在我的协议中添加和不添加函数定义有什么区别?

最佳答案

extension无论如何都是类、协议等的扩展。
在您的例子中,您正在向协议中添加扩展,因此您的扩展方法将成为协议的一部分。这就是为什么你的方法1和方法2没有区别并且打印出正确的东西

关于swift - 如果协议(protocol)扩展中具有功能实现,则是否在协议(protocol)中添加功能定义,为什么没有区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45102414/

10-14 23:49