我是 Swift 新手,正在尝试学习 Memberwise Initialisers 的概念。下面的语句来自“The Swift Programming Language 2.1”。
我的问题是,在什么样的情况下,结构中的存储属性不会有默认值?一个带有解释的例子将不胜感激。
结构类型的成员初始化器
如果结构类型没有定义任何自己的自定义初始值设定项,则结构类型会自动接收成员初始值设定项。与默认初始值设定项不同,结构接收成员初始值设定项,即使它存储了没有默认值的属性。
我是 Swift 新手,正在尝试学习 Memberwise Initialisers 的概念。下面的语句来自“The Swift Programming Language 2.1”。
我的问题是,在什么样的情况下,结构中的存储属性不会有默认值?一个带有解释的例子将不胜感激。
结构类型的成员初始化器
如果结构类型没有定义任何自己的自定义初始值设定项,则结构类型会自动接收成员初始值设定项。与默认初始值设定项不同,结构接收成员初始值设定项,即使它存储了没有默认值的属性。
例如,当没有合理的默认值时:
struct GeoLocation {
let latitude: Float
let longitude: Float
}
let geoLocation = GeoLocation(latitude: 13.7522, longitude: 100.4939)
地球上有很多点,在您的应用程序中作为默认点可能没有意义。
struct Human {
var legs = 2
var name: String
}
是一个name
没有默认值的结构。你不能有默认的初始化器Human()
,因为你不能提供名字;但您可以使用成员初始化程序Human(legs: 1, name: "Lame Harry")
。