一、Swift的枚举
枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值。
Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型,它除了可以定义枚举值外,还可以在枚举中像类一样定义属性和方法
1. 简单枚举定义和使用
//定义枚举,使用enum关键字
enum Method{
case Add
case Sub
case Mul
case Div
}
//可以连在一起写,成员之间用“,“隔开
enum CompassPoint {
case North, South, East, West
}
// 可以使用枚举类型变量或常量接收枚举值,枚举值前有个点
var method: Method = .Add
// 注意: 如果变量或常量没有指定类型, 那么前面必须加上该值属于哪个枚举类型
var point = CompassPoint.North
2. 枚举和switch语句结合进行值匹配
method = Method.Sub
// 注意: 如果case中包含了所有的值, 可以不写default
// 如果case中没有包含枚举中所有的值, 必须写default
switch(method){
case Method.Add:
print("加法")
case .Sub:// 如果变量已经指定了枚举类型,可以把前面的枚举类型省略
print("减法")
case .Mul:
print("除法")
case .Div:
print("乘法")
default:
print("都不是")
}
3. 枚举的原始值
OC中枚举的本质就是整数,所以OC中的枚举是有原始值的,默认是从0开始,而Swift中的枚举默认是没有原始值的,但是可以在定义时告诉系统让枚举有原始值
枚举定义原始值:
//定义枚举类型为Int类型,默认从0开始,后面逐一加一
enum CompassPoint: Int {
case North, South, East, West
}
//定义枚举类型为Int类型,从指定值开始,后面逐一加一
enum Movement: Int {
case Left = 5, Right, Top, Bottom
}
//除了Int类型,Swift枚举更加强大,还可以定义为Double、String等
//但是如果指定除Int的其他类型,需要给所有枚举值赋值
enum Method: String {
case Add = "add"
case Sub = "sub"
case Mul = "mul"
case Div = "div"
}
enum Constants: Double {
case π = 3.14159
case e = 2.71828
case φ = 1.61803398874
case λ = 1.30357
}
枚举值和原始值之间的转化:
// 获取枚举值对应的原始值