【问题标题】:Distinction between private and fileprivate top-level classes私有和文件私有顶级类之间的区别
【发布时间】:2021-05-11 01:10:09
【问题描述】:

在 Swift 3 中,两者的访问控制到底有什么区别

private class Foo { }

fileprivate class Bar { }

假设它们都是顶级类,也就是说,它们被直接放入文件中而不是嵌套在其他构造中?

【问题讨论】:

  • 类中的隐式范围变量怎么样?这些中的任何一个都会影响它们的范围吗?根据文档,它应该,但根据实际测试,它没有。在这两种情况下,它们都是文件私有的。来自文档:如果您将类型的访问级别定义为私有或文件私有,则其成员的默认访问级别也将是私有或文件私有。

标签: swift swift3 access-control


【解决方案1】:

你的情况没有区别。 fileprivateprivate 的唯一不同之处在于类、结构或协议内部。

【讨论】:

  • 这很奇怪。我想知道他们为什么不允许在顶级实体上使用 private
  • @Ethcad 访问控制级别还有其他退化情况,请参阅邮件列表讨论中的this post。对顶级实体的特殊情况进行特殊例外处理是不必要的 IMO。
猜你喜欢
  • 1970-01-01
  • 2019-07-13
  • 2014-10-23
  • 2018-03-17
  • 2010-09-29
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多