为什么称它为Memberwise Initialiser

时间:2016-06-23 20:16:39

标签: swift initializer

来自office Swift Document

的引用
  

所有结构都有一个自动生成的成员初始化程序,您可以使用它初始化新结构实例的成员属性...

问题1 :默认初始化程序有什么特别之处,为什么它不能简单地称为默认初始化程序?为什么要添加“成员”?是因为它列出了Structure中定义的所有成员属性。并且您还必须在创建实例时遵循结构内定义的顺序。

问题2 还有其他特殊的初始化者有自己的特殊名称吗?如果是这样,他们看起来像什么。

[注释第一部分:]与Vadian先生进一步讨论

enter image description here

[注意第二部分:]

enter image description here

2 个答案:

答案 0 :(得分:3)

关于问题1:

斯威夫特有一项不可撤销的法律:

  

类和结构必须在创建该类的实例或结构时将所有存储的属性设置为适当的初始值。存储的属性不能保留在不确定的状态。

我们谈论的是结构

创建结构时,可以使用默认初始化程序(括号对),如果所有属性都有默认值。

如果您只声明没有默认值的属性,编译器会创建一个隐式的成员初始化程序 - 您必须使用 - 以确保分配默认值以非常方便的方式到每个房产

答案 1 :(得分:2)

这似乎主要是基于意见的,并不适合SO,但这是我的2美分:

  1. 默认听起来很像指定,这是一个完全正交的概念。

  2. 不是"特殊",但至少有两种不同的初始值设定项:designated and convenience