1. 枚举定义
enum 定义枚举类型 { case 枚举项 ... }
// 定义一个枚举类型叫City
enum City {
// case 枚举值 这里应该包含所有该City类型的所有值
case BeiJin
case GuangZhou
case ShangHai
case ShenZhen
}
// 赋值时枚举类型可以省略
let at = City.ShangHai
let to:City = .BeiJin
2.原始值 rawValue
enum 定义枚举类型 { case 枚举项(默认值)...}
为枚举项提供一个默认值,这个默认值是在编译的时候就确定了。
enum Language: Int {
case c = 1
case php = 2
case java = 3
case oc = 4
}
var userInput = 3
//枚举类型 ( rawValue: 原始值 )
Language(rawValue: userInput) //java
3.关联值 Associate Value
enum 定义枚举类型 { case 枚举项(关联值类型)...}
需要实例化枚举值后才可以确定。
enum ATMStatus {
case Success (Int)
case Error (String)
}
var balance = 500
func withdraw( amount:Int ) -> ATMStatus {
if balance >= amount {
balance -= amount
return .Success(balance)
}
else {
return .Error("Not")
}
}
let result = withdraw(amount: 100)
switch result {
case let .Success(balance):
print (balance)
case let .Error(errorMessage):
print (errorMessage)
}
4. 递归枚举 注意前面加关键字 indirect
indirect enum 定义枚举类型 { case 枚举项 ... }