Swift扩展的访问控制

问题描述 投票:12回答:1

快速编程语言对扩展的访问控制有这样的说法:

您可以在任何访问权限中扩展类,结构或枚举类,结构或枚举可用的上下文。扩展中添加的任何类型成员都具有相同的默认访问权限扩展为原始类型中声明的类型成员的级别。如果您扩展了公共或内部类型,您添加了任何新类型的成员将具有默认的内部访问级别。如果您扩展私人类型,您添加的所有新类型成员的默认访问级别为私人。

或者,您可以使用明确的访问级别标记扩展修饰符(例如,私人扩展名)以设置新的默认访问权限扩展中定义的所有成员的级别。这个新的默认在单个类型的扩展名中仍可以覆盖成员。

我不完全理解上述说法。是说以下内容:

public struct Test { }

extension Test {
  // 1. This will be default to internal because Test is public?
  var prop: String { return "" }
}

public extension Test {
  // 2. This will have access level of public because extension is marked public?
  var prop2: String { return "" }

extension Test {
  // 3. Is this the same as the above public extension example?
  public var prop2: String { return "" }
}
swift access-control swift-extensions
1个回答
12
投票

您的理解几乎是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.