推荐答案
在 Swift 中,结构体(Struct)会自动生成一个成员逐一构造器(Memberwise Initializer),除非你显式地定义了自定义的构造器。成员逐一构造器允许你在创建结构体实例时,为每个存储属性提供初始值。
struct Point {
var x: Int
var y: Int
}
let origin = Point(x: 0, y: 0)在这个例子中,Point 结构体自动生成了一个成员逐一构造器 Point(x:y:),允许你在创建 Point 实例时直接为 x 和 y 属性赋值。
本题详细解读
什么是成员逐一构造器?
成员逐一构造器是 Swift 编译器为结构体自动生成的一个构造器。它的作用是允许你在创建结构体实例时,为每个存储属性提供初始值。这个构造器的参数列表与结构体的存储属性一一对应。
成员逐一构造器的生成条件
- 只有在结构体没有显式定义任何构造器时,Swift 才会自动生成成员逐一构造器。
- 如果你为结构体定义了自定义构造器,Swift 将不再自动生成成员逐一构造器。
示例代码
struct Rectangle {
var width: Double
var height: Double
}
let rect = Rectangle(width: 10.0, height: 20.0)在这个例子中,Rectangle 结构体自动生成了一个成员逐一构造器 Rectangle(width:height:),允许你在创建 Rectangle 实例时直接为 width 和 height 属性赋值。
自定义构造器的影响
如果你为结构体定义了自定义构造器,Swift 将不再自动生成成员逐一构造器。例如:
// www.javascriptcn.com code example
struct Rectangle {
var width: Double
var height: Double
init(width: Double) {
self.width = width
self.height = 10.0
}
}
// 以下代码将无法编译,因为成员逐一构造器不再可用
// let rect = Rectangle(width: 10.0, height: 20.0)在这个例子中,由于我们为 Rectangle 结构体定义了一个自定义构造器 init(width:),Swift 不再自动生成成员逐一构造器 Rectangle(width:height:)。
总结
成员逐一构造器是 Swift 为结构体自动生成的一个构造器,允许你在创建结构体实例时为每个存储属性提供初始值。只有在结构体没有显式定义任何构造器时,Swift 才会自动生成成员逐一构造器。