Swift 面试题
目录

Swift 中结构体的成员逐一构造器 (Memberwise Initializer) 是什么?

· 约 3 分钟读完 · 第 63 / 196 章

推荐答案

在 Swift 中,结构体(Struct)会自动生成一个成员逐一构造器(Memberwise Initializer),除非你显式地定义了自定义的构造器。成员逐一构造器允许你在创建结构体实例时,为每个存储属性提供初始值。

在这个例子中,Point 结构体自动生成了一个成员逐一构造器 Point(x:y:),允许你在创建 Point 实例时直接为 x 和 y 属性赋值。

本题详细解读

什么是成员逐一构造器?

成员逐一构造器是 Swift 编译器为结构体自动生成的一个构造器。它的作用是允许你在创建结构体实例时,为每个存储属性提供初始值。这个构造器的参数列表与结构体的存储属性一一对应。

成员逐一构造器的生成条件

  • 只有在结构体没有显式定义任何构造器时,Swift 才会自动生成成员逐一构造器。
  • 如果你为结构体定义了自定义构造器,Swift 将不再自动生成成员逐一构造器。

示例代码

在这个例子中,Rectangle 结构体自动生成了一个成员逐一构造器 Rectangle(width:height:),允许你在创建 Rectangle 实例时直接为 width 和 height 属性赋值。

自定义构造器的影响

如果你为结构体定义了自定义构造器,Swift 将不再自动生成成员逐一构造器。例如:

在这个例子中,由于我们为 Rectangle 结构体定义了一个自定义构造器 init(width:),Swift 不再自动生成成员逐一构造器 Rectangle(width:height:)。

总结

成员逐一构造器是 Swift 为结构体自动生成的一个构造器,允许你在创建结构体实例时为每个存储属性提供初始值。只有在结构体没有显式定义任何构造器时,Swift 才会自动生成成员逐一构造器。