我正在阅读另一个SO问题,即Swift do-try-catch语法。在他的回答中, rickster 为OP的自定义类创建了扩展。 Konrad77 评论说,这是“保持代码整洁的好方法。” 我尊重他们的知识,这使我相信我在自己的代码中遗漏了一点。
除了为我创建的类创建扩展之外,还有其他好处(除了整洁)还是原因?我可以将相同的功能直接放入类中。如果我是唯一使用该类的人,或者其他人将使用它,答案是否会改变?
对于从头开始创建的类,扩展是一种功能强大的结构化文档。您将类的核心放在初始定义中,然后添加扩展以提供其他功能。例如,为协议添加遵从性。它提供了所包含代码的位置:
struct Foo { let age: Int } extension Foo: CustomStringConvertible { var description:String { return "age: \(age)" } }
我可以将协议和计算属性放在struct声明中吗?绝对可以,但是当您拥有一个或两个以上的属性时,它就会变得凌乱且难以阅读。如果代码不干净且不易读,则创建错误更容易。使用扩展是避免复杂性带来的困难的好方法。