我使用 Swift 4 在同一文件中定义了两个结构体,其中一个是私有的,所以只有该文件才能访问它。此外,我依赖于结构体的默认/合成初始化程序,也就是说,我没有显式地定义一个初始化程序:
private struct A {
private let string: String
...
}
struct B {
func foo() {
let a = A(string: "bar")
...
}
}
然而,使用以下代码会导致编译错误:
'A' initializer is inaccessible due to 'private' protection level
我不想让其他文件可以访问 A
,因此尝试通过将其设置为 fileprivate
(在这种情况下应该等效于 private
)来解决,但是仍然会出现相同的编译错误(并且仍然抱怨保护级别是 private
)。
有没有办法保持这个结构体是 fileprivate
并且仍然获得一个合成的初始化程序,可以公开所有未初始化的属性?例如: A.init(string:)