为啥要扩展类而不是遵循协议? [复制]
Posted
技术标签:
【中文标题】为啥要扩展类而不是遵循协议? [复制]【英文标题】:Why extend class instead of conforming to a protocol? [duplicate]为什么要扩展类而不是遵循协议? [复制] 【发布时间】:2020-04-23 13:31:27 【问题描述】:我在很多地方都看到过这样的扩展
class MyClass: UIViewController
override func viewDidLoad()
super.viewDidLoad()
extension MyClass: SomeProtocol
func someFunc
扩展类是否有充分的理由,而不是仅仅遵循类本身的协议?
class MyClass: UIViewController, SomeProtocol
override func viewDidLoad()
super.viewDidLoad()
func someFunc
【问题讨论】:
另一个好读物:natashatherobot.com/using-swift-extensions. 【参考方案1】:在技术上(即实际上),没有区别。这两种方法的行为相同。但是,这允许程序员将协议所需的所有代码放在一个地方。
tl;dr:这是一种风格选择。
【讨论】:
【参考方案2】:它将具有相同协议一致性的成员组合在一起,从而无需使用// MARK:
标记部分。
【讨论】:
以上是关于为啥要扩展类而不是遵循协议? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥 KMeans 是一个类而不是 sklearn 中定义的函数?