Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Swift 为什么它被称为Memberwise初始化器_Swift_Initializer - Fatal编程技术网

Swift 为什么它被称为Memberwise初始化器

Swift 为什么它被称为Memberwise初始化器,swift,initializer,Swift,Initializer,引自 所有结构都有一个自动生成的成员初始值设定项,可用于初始化新结构实例的成员属性 问题1:默认初始值设定项有什么特别之处,为什么不能简单地称之为默认初始值设定项?为什么要添加“memberwise”?是因为它列出了结构中定义的所有成员属性。创建实例时,还必须遵循结构内部定义的顺序 问题2是否有其他具有自己特殊名称的特殊初始值设定人?如果是的话,它们是什么样子的 [注第一部分:]供与瓦迪安先生进一步讨论 [注第二部分:] 这似乎主要是基于观点,并不适合这样做,但这是我的2美分: 默认值听起来很

引自

所有结构都有一个自动生成的成员初始值设定项,可用于初始化新结构实例的成员属性

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

问题2是否有其他具有自己特殊名称的特殊初始值设定人?如果是的话,它们是什么样子的

[注第一部分:]供与瓦迪安先生进一步讨论

[注第二部分:]


这似乎主要是基于观点,并不适合这样做,但这是我的2美分:

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

  • 不是“特殊”,但至少有两种不同的初始值设定项:

  • 关于问题1:

    Swift中有一条不可撤销的法律:

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

    我们正在谈论结构

    创建结构时,如果所有属性都有默认值,则可以使用默认初始值设定项(括号对)


    如果只声明没有默认值的属性,编译器将创建一个隐式的成员初始值设定项,您必须使用该初始值设定项,以确保以非常方便的方式为每个属性指定一个默认值

    。我还没有听说任何关于指定的方便初始值设定项的事情。很高兴知道它们确实存在以及它们的名称。更多员工需要学习)如果您觉得这个答案满足您的问题,请接受:)指定和方便的初始值设定项仅适用于类。这个问题是关于结构的。@LeeGillen即使这样,也会导致术语混乱。非常感谢!瓦迪安人。所以编译器只创建了一个隐式的成员初始值设定项来通知您应该以正确的方式创建什么。我想我理解了一点您所说的。如果我创建一个结构而没有为属性创建任何默认值。当我创建该结构的实例时,编译器将自动为我生成一个“memberwise initializer”通知。(请看问题的注释部分)是的,没错,但这不是一个真正的通知,它只是一个如何满足要求的建议,没有通知,嗯。。被称为隐式成员初始化器。。现在对我来说很有意义!非常感谢,我们可以从你们的帮助中学习员工!是的,在这种情况下创建memberwise初始值设定项也是为了能够轻松地分配自定义的不同值。