• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Swift学习笔记(9):枚举

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

目录:

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

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

・可以给枚举成员指定原始值类型:字符串,字符,整型值或浮点数等
・枚举成员可以指定任意类型的关联值存储到枚举成员中
・枚举可以定义构造函数和遵循协议
・枚举是值类型

 

基本语法
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

 

 

声明:该系列内容均来自网络或电子书籍,只做学习总结!

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift - 适配iOS 11,部分问题发布时间:2022-07-13
下一篇:
【Swift 2.1】共享文件操作小结(iOS 8 +)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap