- 枚舉值沒有默認(rèn)值饺汹,默認(rèn)為枚舉類型力惯。
- switch中必須列出所有可能,不然必須用default
- 設(shè)置有默認(rèn)值的枚舉璃俗,必須在枚舉類型后聲明類型套利。取值的時候直接.rawValue(原始值)即可推励。
- 關(guān)聯(lián)值只能保存一個鹤耍,因?yàn)槊杜e只能選其一。
- 如果枚舉的關(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è)置原始值联四,需要在枚舉后面加上類型撑碴,字符串默認(rèn)就是枚舉的名字,Int默認(rèn)為0 依次+1.(枚舉值的類型必須為字符朝墩,整型醉拓,浮點(diǎn)型,不可為元祖)
取值時使用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)
}
}