结构成员初始化 - 省略具有默认值的属性值

2024-05-26

我是 Swift 新手,正在关注在线文档。具体来说,我正在查看初始化(https://docs.swift.org/swift-book/LanguageGuide/Initialization.html https://docs.swift.org/swift-book/LanguageGuide/Initialization.html).

在“结构类型的成员初始化器”小标题下,它说:

当您调用成员初始化程序时,您可以省略任何值 具有默认值的属性。在上面的例子中,尺寸 结构的高度和宽度都有默认值 特性。您可以省略其中一个属性或两个属性,并且 初始化程序对您省略的任何内容使用默认值

然后提供了一个例子:

struct Size {
    var width = 0.0, height = 0.0
}
let twoByTwo = Size(width: 2.0, height: 2.0)

let zeroByTwo = Size(height: 2.0)
print(zeroByTwo.width, zeroByTwo.height)
// Prints "0.0 2.0"

let zeroByZero = Size()
print(zeroByZero.width, zeroByZero.height)
// Prints "0.0 0.0"

但是,如果我尝试这样做,我会收到初始化错误zeroByTwo:

无法使用类型为“(height: Double)”的参数列表调用类型“Size”的初始值设定项

我是不是误会了什么?

我正在使用 Swift 5。


你引用了Swift 5.1 版本的 Swift 编程语言指南 https://docs.swift.org/swift-book/LanguageGuide/Initialization.html。 Swift 5 指南缺少整段内容,因为该功能是 5.1 的新增功能。

在 Swift 5 中,成员初始化器包括所有存储的属性,而不考虑默认变量值,因此您在创建新实例时被迫包含每个参数(除非您创建自己的初始化器)。

在 Swift 5.1 中,成员初始化器包含任何默认值,因此您可以选择在创建实例时省略这些参数。您可以在此处阅读有关新功能的更多信息:合成成员初始值设定项的默认值 https://github.com/apple/swift-evolution/blob/master/proposals/0242-default-values-memberwise.md.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构成员初始化 - 省略具有默认值的属性值 的相关文章

随机推荐