在此示例中,getInstance 是公共(public)的,因此可访问是有意义的,但私有(private)变量也可访问,为什么?
public class SingleObject {
public struct Static {
private static var object: SingleObject?
public static func getObject() -> SingleObject {
if (object == nil) {
object = SingleObject()
}
return object!
}
}
}
SingleObject.Static.object //why private is accessible here?
SingleObject.Static.getObject()
最佳答案
从 Swift 3 开始,示例代码不再编译。添加了一个名为 fileprivate
的新修饰符,其工作方式与 private
过去的工作方式相同(即它可以被同一文件中的任何其他内容看到)。
private
在 Swift 3 和 4 中的工作方式更像你期望的那样 - 在 Swift 3 中,它只能在声明它的上下文中访问,而在 Swift 4 中它也可以可以从该类型的扩展访问(但前提是它们在同一文件中)。
关于swift - 结构中的私有(private)静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713749/