swift3.0- 枚举

2016-08-11  本文已影响88人  07212a79db66

Swift枚举

enum Method{
    case 枚举值
}

enum HomeTableViewCellIdentifier:String {
    case NormalCell = "NormalCell"
    case ForwardCell = "ForwardCell"
    
    static func cellID(status:Status) -> String {
        return status.retweeted_status != nil ? ForwardCell.rawValue : NormalCell.rawValue
        
    }
}



enum Method{
//    case Add
//    case Sub
//    case Mul
//    case Div
    // 可以连在一起写
    case Add, Sub, Mul, Div
}

// 可以使用枚举类型变量或常量接收枚举值
var m: Method = .Add
// 注意: 如果变量或常量没有指定类型, 那么前面必须加上该值属于哪个枚举类型
var m1 = Method.Add


利用Switch匹配

   switch (Menthod.Add) {
        case .Add:
            print("加法")
        case .Sub:
            print("减法")
        case .Mul:
            print("除法")
        case .Div:
            print("乘法")
    }

原始值

enum Method: 枚举值原始值类型{
    case 枚举值
}
enum Method2: Int{
    // 可以连在一起写
    case Add, Sub, Mul, Div
}

// 和OC中的枚举一样, 也可以指定原始值, 后面的值默认+1
enum Method3: Int{
    case Add = 5, Sub, Mul, Div
}
enum Method4: Double{
    // 可以连在一起写
    case Add = 5.0, Sub = 6.0, Mul = 6.1, Div = 8.0
}

// rawValue代表将枚举值转换为原始值   
     print(Method4.Sub.rawValue)
 
 // 原始值转换为枚举值
enum Method5: String{
    case Add = "add", Sub = "sub", Mul = "mul", Div = "div"
}

 // 通过原始值创建枚举值
 //原始值区分大小写
 //返回的是一个可选值,因为原始值对应的枚举值不一定存在
 let m2 = Method5(rawValue: "add")
 print(m2)
       
        

枚举相关值

enum lineSegmentDescriptor{
    case StartAndEndPattern(start:Double, end:Double)
    case StartAndLengthPattern(start: Double, length:Double)
}

 override func viewDidLoad() {
        super.viewDidLoad()
        
       var lsd = lineSegmentDescriptor.StartAndLengthPattern(start: 0.0, length: 100.0)
        switch lsd
        {
        case let .StartAndEndPattern(s, e):
            print("start = \(s) end = \(e)")
        case .StartAndLengthPattern(let s, let l):
            print("start = \(s) lenght = \(l)")
        }
    }

会有一个警告:Switch condition evaluates to a constant,此时需要把变量写到函数外边,或者传入到函数里面即可

  var lsd = lineSegmentDescriptor.StartAndLengthPattern(start: 0.0, length: 100.0)
    override func viewDidLoad() {
        super.viewDidLoad()

        switch lsd
        {
        case let .StartAndEndPattern(s, e):
            print("start = \(s) end = \(e)")
        case .StartAndLengthPattern(let s, let l):
            print("start = \(s) lenght = \(l)")
        }
    }
    
上一篇下一篇

猜你喜欢

热点阅读