- 枚舉值沒有默認值,默認為枚舉類型。
- switch中必須列出所有可能,不然必須用default
- 設(shè)置有默認值的枚舉,必須在枚舉類型后聲明類型。取值的時候直接.rawValue(原始值)即可。
- 關(guān)聯(lián)值只能保存一個,因為枚舉只能選其一。
- 如果枚舉的關(guān)聯(lián)值使用到了自己,則需要添加indirect
1.多個成員值可以在同一行上,用,分開
enum direction {
case east,west
case north
case sourth
}
2.當(dāng)變量的類型已知為枚舉型時,可以用 .east賦值。(如tab.separatorStyle = .singleLine)
3.關(guān)聯(lián)值。
enum direction {
case east,west(Int,Int)
case north(String)
}
//如果后面要改變內(nèi)部枚舉類型的值,這里必須為var。只能擁有一個關(guān)聯(lián)值,相當(dāng)于枚舉時的枚舉值切換。
var x = direction.west(1, 2)
x = .north("zc")
switch x {
case let .west(a, b):
print(a+b)
case let .north(c):
print(c)
default:
print("default")
}
4.設(shè)置原始值,需要在枚舉后面加上類型,字符串默認就是枚舉的名字,Int默認為0 依次+1.(枚舉值的類型必須為字符,整型,浮點型,不可為元祖)
取值時使用rawValue
enum direction:Int {
case east = 1
case north = 2
case sourth = 3
}
let x = direction.west.rawValue
if let x = direction(rawValue: 2){
switch x {
case .east:
print("一路向東")
default:
print("不走了")
}
}else{
print("沒有改值")
}
5.遞歸枚舉,就是在枚舉中仍然使用該枚舉類型。
enum ArithmeticExpression {
case number(Int)
indirect case addition(ArithmeticExpression, ArithmeticExpression)
indirect case multiplication(ArithmeticExpression, ArithmeticExpression)
}
func evalute (_ expression: ArithmeticExpression) -> Int {
switch expression {
case let .number(a):
return a
case let .addition(a, b):
return evalute(_:a)+evalute(_:b)
case let .multiplication(a, b):
return evalute(_:a)*evalute(_:b)
}
}