在Swift中,“fileprivate”关键字是什么意思?

65

我正在学习 Swift,打算打开 Xcode 8 beta 中使用 Swift2 创建的项目,但是发现其中的 private 修饰符被改成了 fileprivate。请问这个关键字的含义是什么?它和 private 有什么不同?

1个回答

125

fileprivate是Swift 3中的新访问修饰符之一,取代了private的含义。fileprivate将一个实体(类、扩展、属性等)定义为对声明它的源文件以外的所有人私有,但对该源文件中的所有实体可访问。

private将实体限制在直接封闭的范围内。


7
“直接封闭作用域”是什么意思?什么情况下我可以只使用“private”,而不是“fileprivate”? - rolling_codes
4
封闭作用域是指声明实体的一组块或文件,private旨在隐藏实现细节或保持仅限于所有者的内容不可见,而fileprivate可用于在同一文件中共享一些公共功能。 - Jans
4
在 Swift 3.0 之前的版本中,'private' 关键字的作用类似于在 Swift 3.0 中的 'fileprivate'。如果你在 Swift 2.3 中声明了两个类,它们都有私有变量并且在同一个文件中,它们仍然可以访问彼此的 'private' 标记变量。 - Robert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接