斯威夫特 3.0
我知道fileprivate
访问级别修饰符将函数/属性的使用限制在声明它的源文件中,并且private
限制在声明的词法范围内。但似乎这条规则不适用于扩展。EG 此代码有效:
class Foo {
}
fileprivate extension Foo {
var aa: Int {
return aaa + 10
}
}
private extension Foo {
var aaa: Int {
return 20
}
}
有人可以帮我弄清楚它们之间的区别吗?谢谢。
斯威夫特 4.0
private
现在可以在扩展名中但在同一个文件中访问。如果您在其他文件中声明/定义扩展名,则您的扩展名将无法访问您的私有变量。
fileprivate
可以在同一个文件中访问。