enum MyEnum {
case A, B, C
}
enum MyEnum2 {
case A
case B
case C
}
这两个枚举声明有什么区别?
答案 0 :(得分:1)
两种语法之间没有区别 - 您个人倾向于使用一种语法而不是另一种语法。
Swift允许您将单独的case
添加到单个enum
,以便您可以将具有相似关联值的enum
常量分组,例如比如Barcode
的书籍示例:
enum Barcode {
case UPCA(Int, Int, Int, Int)
case QRCode(String)
}
对于定义" plain" enum
没有关联的值,这两种语法中的任何一种都是不错的选择。
答案 1 :(得分:1)
我认为值得一提的是,除非您定义类型并初始化第一个元素,否则枚举不会有任何原始值。
enum MyEnum {
case A, B, C
}
let myEnum = MyEnum.A
let myEnumRawValue = myEnum.rawValue
将失败并显示错误' MyEnum'没有名为' rawValue'。
的成员enum MyEnum:Int {
case A = 0, B, C
}
let myEnum = MyEnum.A
let myEnumRawValue = myEnum.rawValue
不会失败。
如果你不想声明一个类型或初始化枚举,但仍然得到一个数字(也许是从一些基数索引)你也可以写:
enum MyEnum {
case A, B, C
func enumIndex(base:Int) -> Int {
switch self {
case .A:
return base
case .B:
return base+1
case .C:
return base+2
default:
return base
}
}
}
在这种情况下
let myEnum = MyEnum.A
let myEnumIndex = myEnum.enumIndex(10)
println("myEnumIndex = \(myEnumIndex)")
将打印:
myEnumIndex = 10