【发布时间】:2018-02-02 13:18:24
【问题描述】:
如何在extension 中创建一个方法,并使其只能在类(或其子类)中访问,如private 方法,但在extension 内的另一个文件中声明?
private 不起作用,因为它必须在同一个声明中。
fileprivate 不起作用,因为它必须在同一个文件中。
public 或默认值不起作用,因为它将在其他类中可见。
我错过了什么吗?
我正在寻找类似 @987654328@ 或 classprivate 的内容。
【问题讨论】:
-
你的动机是什么?为什么不在类本身内部创建一个私有方法呢?扩展的全部意义在于带来类所没有的额外功能并在任何地方使用它。
-
你没有错过任何东西;目前这是不可能的。
-
@KeranMarinov 的动机是在不同的子类中重用该方法。
-
Java 为只能从子类访问的方法提供了受保护的关键字,不要认为 Swift 有它。我还建议,您可以使用具有默认实现的协议,而不是从单个类继承。
标签: swift extension-methods private access-control