我不知道这是否可能,或者我是否应该做这样的事情。
示例两个不同的文件,相同的枚举:
计数器.swift
enum Action {
case Increment
case Decrement
}
Counterpair.swift
enum Action { // invalid redeclaration of 'Action'
case Reset
case Top(Action) // Action should be Counter.Action
case Bottom(Action) // same
}
我来自 javascript,你可以在 require(Counterpair)
之后执行 Counter.Action
。
如何以 Counter 或 Counterpair(或任何其他模块)可以描述枚举操作而不破坏封装的方式构建应用程序?
最佳答案
看来您已经接触过模块术语了。在 Swift 中,您不仅仅导入单个文件。您只能导入其他模块(例如 Foundation、UIKit、CoreData 等框架)。基本上,这意味着项目中的所有文件形成一个模块。由于它们都是同一模块的一部分,因此所有文件在项目中都可以相互可见。您可以使用 Swift 的访问控制功能来设置文件的哪些部分对彼此或对导入您的代码的其他模块可见。
解决您的情况的最简单的方法就是为您的枚举提供两个不同的名称。
enum Behavior {
case Increment
case Decrement
}
enum Action {
case Reset
case Top(Behavior)
case Bottom(Behavior)
}
关于swift - 不同文件中的两个同名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34317779/