枚举

作者: 架构师的一小步 | 来源:发表于2018-12-06 17:20 被阅读0次

    定义一个枚举

    //定义一个Int类型的枚举
    enum NewType1:Int{
        case normal=1,special,images
    }
    //定义一个枚举类型
    enum Demotype{
        case tianxia,doudou,wangshi,maitian
    }
    //定义一个字符串类型的枚举
    enum StringType:String{
        case tianxia="tianxia",doudou="dddddd",tianddid="ttttt"
    }
    //定义一个INt类型的枚举
    enum HTTPStatusCode:Int{
        case ok=200
        case notFount=404
        case forbidden=403
    }
    //获取枚举类型的rawValue值
    let code=HTTPStatusCode.ok.rawValue
    //获取枚举类型rawValue对应的case值
    let statusCode=HTTPStatusCode(rawValue: 200)
    
    let statusCode1=HTTPStatusCode(rawValue: 500)
    //获取枚举类型rawValue对应的case值
    let strstatus=StringType(rawValue: "tianxia")
    //获取枚举类型的rawValue值
    let strstar=StringType.tianxia.rawValue
    
    var codeDemo=Demotype.tianxia
    //这里系统默认已经知道在Demotype这个枚举下,多以.doudou 系统会认为在Demotype下
    codeDemo = .doudou
    
    switch codeDemo {
    case .tianxia:
        print("ddd")
    case .doudou:
        print("ddd")
    case .wangshi:
        print("wnagshi")
        
    default:
        print("cannont be here")
    }
    

    特殊类型enum类似oc的宏定义方法

    /**Associated Values
     *  1.每条keys的类型可以不一样 2.每条keys可以创建多个value出来
     */
    enum Barcode{
        case upc(Int,Int,Int,Int)
        case qrCode(String)
    }
    
    var product=Barcode.upc(3, 3, 2, 1)
    
    var produc=Barcode.upc(4, 4, 1, 3)
    
    product=Barcode.qrCode("ABDSFSDFSD")
    //判断produc类型,相关类型进行输出
    switch product {
    case
      let  .upc(number1, number2, number3, number4):
        print("upc:\(number1),\(number2),\(number3),\(number4))")
    case let .qrCode(productCode):
        print("QR code:\(product)")
    }
    
    //如果product的类型是Barcode.qrCode就输出这个product
    if case let Barcode.qrCode(producted)=product{
        print("QR code:\(product)")
    }
    

    在enum里定义函数

    enum HTTPStatusCode:Int{
        case ok = 200
        case notFound = 404
        case forbidden = 403
        //enum 可以定义一个函数,当做case使用
        func is4XX() -> Bool{
            //self.rawValue 相当于当前传进来的case值
        if 400 <= self.rawValue && self.rawValue < 500{
          return true
        }
          return false
        }
    }
    
    var code:HTTPStatusCode=HTTPStatusCode.notFound
    
    code = .ok
    //这里就是把code的.notFound传进is4XX函数里
    code.is4XX() //false
    

    定义一个

    enum HTTPStatusCode:Int{
        case ok = 200
        case notFound = 404
        case forbidden = 403
       
        //定义一个属性,返回一个可读的字符串
        var message:String{
            get{
                switch self {
                case .ok:
                    return "OK"
                case .notFound:
                    return "NOTFOUNd"
                case .forbidden:
                    return "Forbidden"
                }
            }
        }
        
    }
    
    var code:HTTPStatusCode=HTTPStatusCode.notFound
    
    code = .notFound
    
    //使用
    code.message //"NOTFOUNd"
    

    相关文章

      网友评论

          本文标题:枚举

          本文链接:https://www.haomeiwen.com/subject/cjqocqtx.html