gpt4 book ai didi

swift - 为什么我们添加与扩展的协议(protocol)一致性?

转载 作者:搜寻专家 更新时间:2023-11-01 05:50:10 29 4
gpt4 key购买 nike

如果我有一个类 Christmas 和一个协议(protocol) Merry,要使 Christmas 符合 Merry,很多人会这样做:

class Christmas {
...
}

extension Christmas: Merry {
...
}

它也受到Apple的鼓励.

但是,在定义的时候让类符合协议(protocol)不是更方便吗?像这样:

class Christmas: Merry {
...
}

What's the difference between the 2 methods?

最佳答案

它们是不同的编码风格。第一个选项

class Christmas {
...
}

extension Christmas: Merry {
...
}
当您查看整个类(class)时,

会更干净。您可以立即看到该类符合的所有协议(protocol)实现。

使用第二个选项,您将协议(protocol)的实现放在类中,将其与类方法混合在一起。但是,如果您使用

//MARK: - 

与使用扩展相比,代码变得不那么干净。例如:

protocol Merry: class {
func celebrate()
}

class Cristmas: NSObject, Merry {
private var santa: AnyObject?

//MARK: - Private Methods
private func callSanta() {
//calling Santa
}

//MARK: - Merry Implementation
func celebrate() {
//celebration starts here
}
}

当查看整个类时,您会清楚地看到协议(protocol)实现的分离: enter image description here

这两个选项的功能是相同的。

关于swift - 为什么我们添加与扩展的协议(protocol)一致性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41236710/

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