Avatar ·

如何让 Swift 中结构的 memberwise 初始化器默认公开?

大家好!我开始学习 Swift,在处理结构体(struct)时遇到了一个问题。默认情况下,Swift 会为结构体生成 memberwise 初始化器(逐成员初始化器),允许通过传递所有属性的值来创建实例。但如果我将结构体声明为 `public` 访问级别,memberwise 初始化器会变成内部(internal)而非公开的。因此,我无法从其他模块使用该结构体。 示例如下: ```swift // ModuleA.swift public struct User { public let name: String public let age: Int // memberwise 初始化器未显式声明 } // ModuleB.swift(另一个模块) let user = User(name: "Alice", age: 30) // 错误:'User' 无法使用 memberwise 初始化器初始化 ``` 我知道可以编写自己的公开初始化器: ```swift public struct User { public let name: String public let age: Int public init(name: String, age: Int) {