Swift 访问控制何时使用 Class 图的前置符号

Swift Access Control When to Use Which Preceding Symbols For a Class Diagram

我之前在Java中学习过class图;但是,我也想在与 Swift 一起工作时正确使用它们。我不是在寻找任何自动生成的东西,因为我想擅长绘制它们并快速阅读它们。

无论如何我很有信心 Java 我们使用前面的符号来表示变量可见性。 (Picture example)

+   Public
-   Private
#   Protected
~    Package
*   Random    

但是当谈到 Swift 时,当我在 public [=30= 中有一个隐式内部变量时,我有点困惑在哪里可以找到使用哪个符号的适当共识] 像这样。

public class MapTracker {
    var locationManager = CLLocationManager()
}

用于访问控制的 Swift 4.2 Documentation 让我认为这与 PackageProtected 密切相关。

有什么想法吗?

如您所见,Java 与 Swift 确实不同。 :)

Swift 具有以下访问修饰符,从最容易访问到最少:

  • open
  • public
  • internal
  • fileprivate
  • private

他们的行为与 Java 同行(如果有的话)完全不同。所以我的建议是不要试图在 Java 中找到它们的等价物。忘掉你所知道的关于 Java 的一切,试着想出 Swift 特有的符号。例如,我想出了:

++    open
+     public
~     internal
-~    fileprivate
-     private

您还可以争辩说区分 fileprivateprivate 不是很有用,因为在 class 图中,您看不到哪个 class属于哪些文件。您可以对它们都使用 -


我发现这个 project 可以生成您的 swift 代码的 class 图。从它的外观来看,它似乎没有生成任何指示访问修饰符的东西。