摘要訊息 : 學習 Switch 中的列舉.
0. 前言
本文于 2022 年 3 月 17 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.
1. 枚举语法
enum 枚举名称 {
枚举成员
}
例如, 现在想要创建一个上班人员等级系统 :
enum employee {
case 总经理
case 区域经理
case 主管
case 业务员
}
同样可以写成一行的形式 :
enum employee {
case 总经理,区域经理,主管,业务员
}
2. 枚举成员的访问和编辑
enum employee {
case 总经理
case 区域经理
case 主管
case 业务员
}
print(employee.总经理) //结果 : 总经理
var emp = employee.业务员
emp = .临时工
print(emp) // 结果 : 临时工
3. 枚举值的遍历
我们通常使用 switch
语句进行枚举值的遍历 :
enum employee {
case 总经理
case 区域经理
case 主管
case 业务员
}
let emp = employee.总经理
switch emp {
case employee.总经理 :
print("您好, 总经理!")
case employee.区域经理 :
print("您好, 区域经理!")
case employee.主管 :
print("您好, 主管!")
case employee.业务员 :
print("您好, 业务员!")
}
print(emp) // 结果 : 您好, 总经理!
4. 枚举的原始值
枚举成员可以使用相同类型的默认值, 这些默认值被称为枚举的原始值 :
enum gender : UInt8 {
case male = 1
case female = 2
case unknown = 3
}
在操作存储整数或者字符串类型的原始值枚举的时候, Swift 可以自动为没有分配原始值的成员分配对应的原始值, 则可以得到上面代码的简化版本 :
enum gender : UInt8 {
case male = 1, female, unknown
}
从第二个枚举成员开始, 后面每一个成员的原始值都比前一个成员的原始值大 1. 如果第一个成员没有对应的原始值, 那么 Swift 默认第一个成员原始值为 0
. String
类型的原始值默认为成员本身.
Swift 中提供了 rawValue
属性来访问一个枚举成员的原始值 :
enum employee : Double {
case 总经理
case 区域经理
case 主管
case 业务员
}
let emp = employee.区域经理
print(emp.区域经理.rawValue) // 结果 : 1.0
enum new_employee : String {
case 总经理
case 区域经理
case 主管
case 业务员
}
let new_emp = new_employee.区域经理
print(new_emp.区域经理.rawValue) // 结果 : 总经理
5. 枚举的方法
如果你想在枚举中添加类似于函数一类的, 使枚举有更多的用途, 称为给枚举添加方法 :
enum gender : UInt8 {
case male, female, unknown
func description() {
switch self {
case .male :
print("Hi, man!")
case .female :
print("Hi, lady!")
case .unknown
print("Hi!")
}
}
}
let people = gender.female
people.description() // 结果 : Hi, lady!
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :