1、在swift中的枚举类型如下:
- Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型,
-
它可以像类和结构体一样增加属性和方法
enum Method{
case Add
case Sub
case Mul
case Div
}
var m0:Method = .Add
var m1 = Method.Sub
在C语言中的枚举类型
enum Method_C(C语言中语法) {
Add,//默认 = 0
Sub, =1
Mul, =2
Div =3
}
2、枚举类型原始值
- OC中枚举的本质就是整数, 所以OC中的枚举是有原始值的,默认是从0开始
- 而Swift中的枚举默认是没有原始值的, 但是可以在定义时告诉系统让枚举有原始值
- 和OC中的枚举一样, 也可以指定原始值, 后面的值默认+1 , 但必须指定枚举的类型, 并且一定是 Int 类型
- Swift中的枚举除了可以指定整形以外还可以指定其它类型, 但是如果指定其它类型, 必须给所有枚举值赋值, 因为不能自动递增
- 通过rawValue将枚举值转换为原始值
//枚举类型原始值
enum Method:Int{
// case Add,Sub,Mul,Div
case Add = 4 //指定初始值之后,其次值依此+1
case Sub
case Mul
case Div
}
print(Method.Sub.rawValue)
// 自定的枚举原始值的类型不是 Int , 所以后面的值不会默认 +1,
// 后面的也需要手动赋值
enum Method4: Double{
case Add = 5.0, Sub = 6.8, Mul = 7.1, Div = 8.4
}
Swift
枚举中支持以下四种关联值类型:
- 整型(Integer)
- 浮点数(Float Point)
- 字符串(String)
- 布尔类型(Boolean)
3、枚举类型与switch匹配
//注意: 如果case中包含了所有的值, 可以不写default.
//如果case中没有包含枚举中所有的值, 必须写default
func chooseFunc(op:Method) -> (Double,Double) -> Double
{
switch op {
case .Add:
func add(a:Double,b:Double) -> Double
{
return a+b
}
return add
case .Sub:
return {(a:Double,b:Double) -> Double in return a-b}
case .Mul:
return {return $0 * $1}
case .Div:
return {$0 / $1}
// default:
// return {$0 + $1}
}
}
let aa = chooseFunc(op:.Add)(10,5)
print(aa)