如何在Swift中保护(如ruby)变量或函数?我知道斯威夫特只有3个级别但是有可能吗?
访问级别
Swift为代码中的实体提供三种不同的访问级别.这些访问级别与定义实体的源文件相关,也与源文件所属的模块相关.
- 公共访问使实体可以在其定义模块的任何源文件中使用,也可以在来自导入定义模块的另一个模块的源文件中使用.在指定框架的公共接口时,通常使用公共访问.
- 内部访问使实体可以在其定义模块的任何源文件中使用,但不能在该模块之外的任何源文件中使用.在定义应用程序或框架的内部结构时,通常使用内部访问.
- 专用访问将实体的使用限制在其自己的定义源文件中.使用私有访问隐藏特定功能的实现细节.
公共访问是最高(限制性最小)的访问级别,私有访问是最低(或限制性最强)的访问级别
目前我只看到一个解决方案 - 在单个文件中编写带有私有修饰符和子类的父类,但这有点痛苦.
Swift 中没有相当于protected只有子类可以访问该方法的方法。就我个人而言,我不会错过它。
在 Swift(作为 Objective-C)中,与其他语言相比,对子类化的重视程度要低得多。如果您发现有一组想要受到保护的方法,最好将它们作为委托分解出来。
在 Ruby 看来,这可能很重要。然而在 Swift 中,这既不是无用的,也不是语言的问题。
就访问级别而言,Swift 语言主要基于模块。它甚至还有public private(set)变量,这在 Objective-C 中是非常需要的(导致样板文件)。