美文网首页
Swift语法初探(枚举)

Swift语法初探(枚举)

作者: 世界未末日 | 来源:发表于2016-04-13 15:05 被阅读15次

    Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果一个值(被认为是“原始”值)被提供给每个枚举成员,则该值可以是一个字符串,一个字符,或是一个整型值或浮点值。此外,枚举成员可以指定任何类型的相关值存储到枚举成员值中。

    //定义枚举变量
    enum MessageType{
    case Text
    case Notify
    case Voice
    case Video
    }

    //成员值也可以出现在同一行上,用逗号隔开
    enum MessageType1{
    case Text, Notify, Voice, video
    }

    //当变量的类型被声明为Messagetype,可以使用更短的点语法将其设置为另一个Messagetype的值
    var recievedMessageType = MessageType.Notify
    recievedMessageType = .Text

    //匹配枚举值和Switch语句(代码比if语句更精炼)
    switch recievedMessageType{
    case .Text:
    print("文本消息")
    case .Notify:
    print("通知消息")
    case .Voice:
    print("语音消息")
    case .Video:
    print("视频消息")
    }

    //---------------------------------------------------------------
    //枚举的相关值:可以定义 Swift 的枚举存储任何类型的相关值,如果需要的话,每个成员的数据类型可以是各不相同的。
    enum Barcode {
    case UPCA(Int, Int, Int)
    case QRCode(String)
    }
    //声明一个Barcode.UPCA类型的变量
    var productBarcode = Barcode.UPCA(8, 85909_51226, 3)
    productBarcode = .QRCode("ABCDEFGHIJKLMNOP")

    //枚举和switch语句的匹配应用
    switch productBarcode {
    case .UPCA(let numberSystem, let identifier, let check):
    print("UPC-A with value of (numberSystem), (identifier), (check).")
    case .QRCode(let productCode):
    print("QR code with value of (productCode).")
    }

    //---------------------------------------------------------------
    //枚举的原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。
    enum Planet: Int {
    case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
    }

    //使用枚举成员的rawValue属性可以访问该成员的原始值
    let earthOrder = Planet.Earth.rawValue

    //通过原始值找到对应的枚举变量。返回的是一个可选值
    let possiblePlanet = Planet(rawValue: 9)
    if let possiblePlanet = Planet(rawValue: 9) {
    switch possiblePlanet {
    case .Earth:
    print("地球")
    default:
    print("其他行星")
    }
    }else{
    print("没有找到9号行星")
    }

    详细参考

    相关文章

      网友评论

          本文标题:Swift语法初探(枚举)

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