小编典典

默认情况下,如何将成员初始化程序公开,用于 Swift 中的结构?

all

我有一个定义结构的 Swift 框架:

public struct CollectionTO {
    var index: Order
    var title: String
    var description: String
}

但是,我似乎无法使用另一个导入库的项目中的隐式成员初始化程序。错误是:

‘CollectionTO’ 无法初始化,因为它没有可访问的初始化程序

即默认的合成成员初始化器不是public

var collection1 = CollectionTO(index: 1, title: "New Releases", description: "All the new releases")

我必须像这样添加自己的 init 方法:

public struct CollectionTO {
    var index: Order
    var title: String
    var description: String

    public init(index: Order, title: String, description: String) {
        self.index = index;
        self.title = title;
        self.description = description;
    }
}

…但是有没有办法在不明确定义的情况下做到这一点public init


阅读 74

收藏
2022-06-11

共1个答案

小编典典

引用手册:

“结构类型的默认成员初始化器如果结构类型的任何存储属性是私有的,则结构类型的默认成员初始化器被认为是私有的。否则,初始化器具有内部访问级别。

与上面的默认初始化程序一样,如果您希望在另一个模块中使用公共结构类型时可以使用成员初始化程序进行初始化,您必须自己提供一个公共成员初始化程序作为类型定义的一部分。”

摘自“The Swift Programming
Language”
“Access
Control”
部分。

2022-06-11