gpt4 book ai didi

Swift:对于协议(protocol)在这种情况下有用的原因有点困惑

转载 作者:行者123 更新时间:2023-11-30 12:06:40 26 4
gpt4 key购买 nike

我在这里遇到了这个例子

 protocol Barker {
func bark()
}

class GermanShephard: Barker {
func bark() {
print("Bark")
}
}

class BelgianMalinois: Barker {
func bark() {
print("Bark!")
}
}

let dog = BelgianMalinois()
dog.bark()

我知道它是如何工作的。不过,我不知道这样做有什么好处。您可以删除协议(protocol)并仍然得到相同的结果。任何解释都会有用。我知道带有协议(protocol)的委托(delegate)对于从一个对象向另一个对象发送消息非常有用。这很有用,因为任何对象都可以继承委托(delegate)。这样,像 UITableView 这样的库就不必引用您的对象来向其发送消息。

最佳答案

在您的简单示例中不需要该协议(protocol)。但让我们扩展您的示例:

func handleBarkingDog(_ barker: Barker) {
barker.bark()
}

let dog1 = BelgianMalinois()
let dog2 = GermanShephard()

handleBarkingDog(dog1)
handleBarkingDog(dog2)

var barker: Barker = dog1
barker = dog2

如果没有协议(protocol)(或基类),您将无法将对两种不同类型的狗的引用传递给通用方法或将它们分配给变量。

关于Swift:对于协议(protocol)在这种情况下有用的原因有点困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com