是否可以通过扩展将关联值添加到现有 Swift 枚举?
Is it possible to add associated values to an existing Swift enum via extensions?
在 Swift 3 中,假设有一个系统定义的枚举(即我不控制源代码),如下所示:
enum currentState: Int {
case enabled
case disabled
case unknown
}
是否可以通过扩展专门为现有成员添加关联值?
不,你不能。想想看,currentState
枚举真的只是一个受限制的 Int
。它甚至不是一个对象。
如果您需要更复杂的枚举,您需要包装给您的那个。
注意:Swift 扩展通常不能向基本类型添加状态。例如。这也不起作用:
class A {}
extension A { var value : Int = 32 }
在 Swift 3 中,假设有一个系统定义的枚举(即我不控制源代码),如下所示:
enum currentState: Int {
case enabled
case disabled
case unknown
}
是否可以通过扩展专门为现有成员添加关联值?
不,你不能。想想看,currentState
枚举真的只是一个受限制的 Int
。它甚至不是一个对象。
如果您需要更复杂的枚举,您需要包装给您的那个。
注意:Swift 扩展通常不能向基本类型添加状态。例如。这也不起作用:
class A {}
extension A { var value : Int = 32 }