由于“内部”保护级别,初始化程序无法访问

n17*_*911 11 swift

我在 Swift 中定义了一个具有公共属性的结构

public struct MyStruct {
   
    public let prop1: String
    public let prop2: String
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我尝试通过执行以下操作来初始化结构

MyStruct(prop1: "abc", prop2: "def")

但我收到编译器错误,提示“由于‘内部保护’级别,MyStruct 初始化程序无法访问。”

该结构体和成员处于公共保护级别。所以我不明白什么是“内部”保护级别。

chr*_*epe 6

首先有五种不同的保护级别:privatefileprivateinternalpublicopen

您在没有保护级别关键字的情况下声明的任何属性、函数或初始化程序都将自动声明为internal.

内部意味着您的属性、方法或初始值设定项可以在同一模块中的任何位置访问。

看起来您正在尝试从另一个模块创建一个新结构。最好的解决方案可能是创建您自己的解决方案,init而不是自动生成的解决方案,并将其声明为公共。

希望这对您有帮助。