Enum 枚举
例子
使用 enum
和 case
声明枚举
swift
// 首字母大写
enum Weekday {
case Mon
case Tue
case Wed
case Thu
case Fri
case Sat
case Sun
}
var a = Weekday.Mon
print(a) // Mon
print(type(of: a)) // Weekday
也可以使用单行输入的方式
swift
enum Position {
case top, right, bottom, left
}
var a = Position.right
print(a) // right
print(type(of: a)) // Position
修改值
如果想要修改一个枚举,可以使用只要 .
即可修改
swift
enum Position {
case top, right, bottom, left
}
var a = Position.right
a = .top
print(a) // top
匹配
可以使用 .
直接快速匹配
swift
enum Position {
case top, right, bottom, left
}
var a = Position.right
switch a {
case .bottom:
print("下")
case .top:
print("上")
case .right:
print("右")
case .left:
print("左")
}
枚举的关联值
枚举可以添加一些关联值
swift
enum Position {
case top
case right(size: Int)
case bottom(size: Int)
case left(size: Int, height: Int)
}
var a = Position.right(size: 20)
switch a {
case .bottom:
print("下")
case .top:
print("上")
case .right(let size):
print("右\(size)")
case .left(let size, let height):
print("左\(size)\(height)")
}
遍历枚举
正常情况下枚举是不能遍历的,如果希望遍历需要给枚举添加 CaseIterable
可遍历协议,再使用 allCases
字段来实现遍历
swift
enum Position: CaseIterable {
case top, right, bottom, left
}
for i in Position.allCases {
print(i)
}
设置和获取值
枚举可以设置每一项的值,并且可以使用 rawValue
获取值的内容
swift
enum Position: Int {
case top = 1
case right = 2
case bottom = 3
case left = 4
}
print(Position.bottom.rawValue)