Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 快速编程风格_Ios_Swift - Fatal编程技术网

Ios 快速编程风格

Ios 快速编程风格,ios,swift,Ios,Swift,我在github中看到了一些源代码,如下所示: 我们可以看到有一个名为Ship的结构的定义,其中有一些变量。从下面的代码中,我们可以看到其中还有一些函数。它是以以下风格编写的: struct xxx { } extension xxx { func yyy() {} } struct xxx { func yyy() {} } 我还可以用以下样式定义结构: struct xxx { } extension xxx { func yyy() {} } struc

我在github中看到了一些源代码,如下所示:

我们可以看到有一个名为Ship的结构的定义,其中有一些变量。从下面的代码中,我们可以看到其中还有一些函数。它是以以下风格编写的:

struct xxx {
}

extension xxx {
    func yyy() {}
}
struct xxx {
    func yyy() {}
}
我还可以用以下样式定义结构:

struct xxx {
}

extension xxx {
    func yyy() {}
}
struct xxx {
    func yyy() {}
}
那么这两种风格有什么不同呢?是否有swift编程风格指南

扩展向现有类、结构、枚举或协议类型添加新功能。这包括扩展无法访问原始源代码的类型(称为追溯建模)的能力


因此,当您想要扩展一个已经存在的实现时,它是有用的。Apple有很好的文档,我强烈建议您阅读上面的链接。

从您的示例中,第一个是带有扩展的基本结构

struct xxx {
}

extension xxx {
function yyy() {}
}
另一个是内置函数的结构

struct xxx {
function yyy() {}
}
假设您由于某种原因无法修改原始结构,但仍然希望能够执行函数yyy()->您可以扩展该类以调用函数yyy(),而无需修改该类本身(或更改其在程序中其他地方的行为方式)

“扩展可以向类型添加新功能,但不能覆盖现有功能。”(src:)


->当您无权访问类但希望添加一些功能时,扩展非常有用。使用扩展,您可以划分类并根据需要自定义类的功能。

请查看此项。我认为它涵盖了你的问题。它有助于将你的代码组织成一组相关的方法,特别是在采用协议时(如参考的Q&A中所述)。此处推荐:。如何将方法准确地分组到扩展中是个人喜好的问题。我不会像您链接到的示例代码中那样为每个方法定义扩展。我不确定这是否是该问题的重复,因为该问题讨论的是带有协议的扩展,这有明显的好处,而事实并非如此。@GoatInTheMachine:据我所知,这两个问题都是关于何时使用扩展的(并且没有在结构/类定义中直接定义所有方法)。另一个问题没有提到协议,所以对我来说似乎是同一个问题。-这是对另一个问题的回答,告诉我们协议一致性是一个主要用例,但也是代码组织:“对我来说,这似乎完全合理,因为您可以使用扩展将逻辑的不同部分公开给不同的扩展。”这里的问题是定义您自己的类型,而不是扩展您没有源代码的现有类型。