Swift 基础学习(枚举基本语法)

/*
Swift枚举
(1)枚举基本语法
(2)switch匹配枚举
(3)原始值
(4)原始值rawValue方法,2.0版本之前为fromRaw
(5)枚举关联值
(6)switch提取枚举关联值
*/
enum Method {
//    case Add
//    case Sub
//    case Mul
//    case Div
    //等同于
    case Add, Sub, Mul, Div
}
var m0: Method = .Add
//相当于类名.属性
var m1 = Method.Sub

/*
(2)switch匹配枚举值
*/
func chooseMethod(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,否则会报一个警告;当我们的枚举没有列举完时,需要写default;
//    default:
//        return {$0 + $1}
    }

}
let val = chooseMethod(.Mul)(30, 5)
print(val)

/*
(3)原始值
*/
enum Method1: Int {
    //    case Add
    //    case Sub
    //    case Mul
    //    case Div
    //等同于
    case Add = 5, Sub, Mul = 11, Div
    //当指定一个值后,后面一次加1
}
print(Method1.Add.rawValue)
print(Method1.Sub.rawValue)
print(Method1.Mul.rawValue)
print(Method1.Div.rawValue)

enum Method2: String {
    //    case Add
    //    case Sub
    //    case Mul
    //    case Div
    //等同于
    case Add = "add", Sub = "sub", Mul = "mul", Div = "div"
}
print(Method2.Add.rawValue)
print(Method2.Sub.rawValue)
print(Method2.Mul.rawValue)
print(Method2.Div.rawValue)

//返回一个可选枚举类型,如果不加可选,会报错
let op: Method2? = Method2(rawValue: "Add")
print(op)

//枚举关联值
enum LineSegmentDescriptor {
    //为枚举值关联不同的值
    case StartAndEndPattern(start: Double, end: Double)
    case StartAndLengthPattern(start: Double, length: Double)
}
var lsd = LineSegmentDescriptor.StartAndEndPattern(start: 10, end: 20)
//lsd = LineSegmentDescriptor.StartAndLengthPattern(start: 10, length: 10)

//switch提取枚举关联值
switch lsd {
case let .StartAndEndPattern(s, e):
    print("\(s) -> \(e)")
case.StartAndLengthPattern(let s, let len):
    print("start:\(s), length:\(len)")
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值