• Swift学习笔记(9):枚举


    目录:

    • 基本语法
    • 关联值
    • 原始值

    枚举为一组相关的值定义了一个共同的类型。

    ・可以给枚举成员指定原始值类型:字符串,字符,整型值或浮点数等
    ・枚举成员可以指定任意类型的关联值存储到枚举成员中
    ・枚举可以定义构造函数和遵循协议
    ・枚举是值类型
    基本语法
    enum CompassPoint {
        case north
        case south
        case east
        case west
    }
    
    // 多个成员值可以出现在同一行上
    enum Planet {
        case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
    }
    
    var directionToHead = CompassPoint.west // 定义枚举变量并赋值
    directionToHead = .east                 // 给已知类型的枚举变量赋值
    
    // 在switch中使用枚举
    let somePlanet = Planet.earth
    switch somePlanet {
    case .earth:
        print("Mostly harmless")
    default:
        print("Not a safe place for humans")
    }
    关联值

    可以给枚举定义任意类型的关联值,每个关联值类型可以各不相同。

    enum Barcode {
        case upc(Int, Int, Int, Int)
        case qrCode(String)
    }
    var productBarcode = Barcode.upc(8, 85909, 51226, 3) // 分配条形码
    productBarcode = .qrCode("ABCDEFGHIJKLMNOP") // 同样可以赋值二维码
    
    // 提取枚举关联值
    switch productBarcode {
    case .upc(let numberSystem, let manufacturer, let product, let check):
        print("UPC: (numberSystem), (manufacturer), (product), (check).")
    case .qrCode(let productCode):
        print("QR code: (productCode).")。// 打印输出
    }
    
    // 枚举成员的所有关联值都被提取为常量或变量,使用let或var
     switch productBarcode {
     case let .upc(numberSystem, manufacturer, product, check):
         print("UPC: (numberSystem), (manufacturer), (product), (check).")
     case let .qrCode(productCode):
         print("QR code: (productCode).")
     }
    原始值

    原始值不同于关联值,原始值是在定义枚举时被预先填充的固定不变的值,关联值是在创建枚举常量或变量时才设置的可变更的值。

    // 首元素原始值赋值1,其后元素值依次递增
    enum Planet: Int {
        case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
    }
    
    // CompassPoint.south 拥有隐式原始值 south
    enum CompassPoint: String {
        case north, south, east, west
    }
    
    // 使用枚举成员rawValue属性可以访问其原始值
    let earthsOrder = Planet.earth.rawValue
    
    // 使用枚举原始值创建可选枚举常量
    let possiblePlanet = Planet(rawValue: 7)  // possiblePlanet 类型为 Planet? 值为 Planet.uranus
    声明:该系列内容均来自网络或电子书籍,只做学习总结!
  • 相关阅读:
    Fork/Join框架基本使用
    服务端高并发分布式架构演进之路
    Netty专题(一)-----计算机网络、TCP/ICP、linux网络I/O模型
    Nginx专题(四)-----https、nginx高可用
    Nginx专题(三)-----核心原理、跨域解决、防盗链、缓存以及压缩
    微信开放平台开发第三方授权登陆(四):微信小程序
    微信开放平台开发第三方授权登陆(三):微信公众号
    微信开放平台开发第三方授权登陆(二):PC网页端
    微信开放平台开发第三方授权登陆(一)-----开发前准备
    Mysql:如果数据存在则更新,不存在则插入
  • 原文地址:https://www.cnblogs.com/Youhei/p/6878767.html
Copyright © 2020-2023  润新知