我在github中看到了一些源代码,如下所示: functional-swift
我们可以看到一个名为Ship的结构的定义,其中有一些变量。从下面的代码我们可以看到它中还有一些功能。它用以下样式编写:
struct xxx {
}
extension xxx {
func yyy() {}
}
我还可以用以下样式确定结构:
struct xxx {
func yyy() {}
}
那么两种风格有什么不同?有快速的编程风格指南吗?
答案 0 :(得分:1)
从您的示例中,第一个是具有扩展名
的基本结构struct xxx {
}
extension xxx {
function yyy() {}
}
另一个是内置函数的结构。
struct xxx {
function yyy() {}
}
想象一下你出于某种原因不能修改原始结构,但你仍然希望能够执行yyy() - >函数。你可以扩展类来调用函数yyy()而无需修改类本身(或改变它在程序中其他地方的行为方式)
"扩展可以为类型添加新功能,但它们不能覆盖现有功能。" (src:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html)
- >当您无法访问某个类但希望添加某些功能时,扩展名很有用。使用扩展,您可以划分类并自定义类可以根据需要执行的操作。
答案 1 :(得分:0)
扩展为现有的类,结构,枚举或协议类型添加新功能。这包括扩展您无法访问原始源代码的类型的能力(称为追溯建模)。
因此,当您想要扩展已有的实现时,它的用处是有用的。 Apple有很好的文档,我强烈建议您阅读上面的链接。