swift3 - 文件私有(private)和私有(private)扩展之间的区别?

标签 swift3 swift4 access-control access-modifiers access-levels

swift 3.0

我知道fileprivate访问级别修饰符将函数/属性的使用限制在声明它的源文件和 private - 仅限于声明的词法范围。但似乎这条规则不适用于扩展。例如。此代码有效:

class Foo {
}

fileprivate extension Foo {
    var aa: Int {
        return aaa + 10
    }
}

private extension Foo {
    var aaa: Int {
        return 20
    }
}

有人可以帮我弄清楚它们之间的区别吗?谢谢。

swift 4.0
private现在可以在扩展名中但在同一个文件中访问。如果您在其他文件中声明/定义扩展名,则您的扩展名将无法访问您的私有(private)变量。
fileprivate可以在同一个文件中访问。

最佳答案

With Swift 4.0, scope of private and fileprivate is extended.
Private is now accessible within same file, outside actual class/extension. If you declare/define your extension in other file, then your private variable will not be accessible at that time fileprivate will work



文件私有(private)
文件私有(private)访问将实体的使用限制在其自己的定义源文件中。当在整个文件中使用这些细节时,使用文件私有(private)访问来隐藏特定功能的实现细节。
语法:fileprivate <var type> <variable name>示例:fileprivate class SomeFilePrivateClass {}
私有(private)
私有(private)访问将实体的使用限制为封闭声明,以及该 的扩展。同一文件中的声明 .当这些细节仅在单个声明中使用时,使用私有(private)访问来隐藏特定功能的实现细节。
语法:private <var type> <variable name>示例:private class SomePrivateClass {}
以下是有关所有访问级别的更多详细信息:Swift - Access Levels

关于swift3 - 文件私有(private)和私有(private)扩展之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287220/

相关文章:

ios - Swift 3 - 隐藏元素

ios - 如何使用 SwiftyJSON 显示 API 图像

c++ - C++ 中的密封类和虚拟继承

security - 仅启动/停止实例的 Google Cloud IAM 角色?

swift - Core Data 3 从索引中读取和写入数据

swift3 - WKWebView 如何从 HTTPCookieStorage 添加 auth cookie

Swift:两个动画一个接一个

ios - Collection View 中的水平滚动

javascript - 如何正确实现 CORS (Access-Control-Allow-Origin)?

ios - 如何在没有 SDK 的情况下在 Swift 3 中在 Facebook 和 Twitter 应用程序上共享