Swift-枚举类型以及原始值,与Switch匹配

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)



©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值