提示信息

Swift 枚举

千城 已关注

Swift 编程语言中的枚举(Enumeration)是一种非常强大的特性,通常用于定义一组相关的值,使你能在代码中以一种类型安全的方式来处理这些值。Swift 中的枚举比其他一些语言(如 C 或 Objective-C)中的更为灵活和功能强大。以下是 Swift 枚举的一些关键特性和用法:

基本用法

可以用 enum 关键字来定义枚举。例如,定义一个表示指南针方向的枚举:

  1. enum CompassPoint {
  2. case north
  3. case south
  4. case east
  5. case west
  6. }

使用枚举

可以像这样使用枚举:

  1. var direction = CompassPoint.north
  2. direction = .east // 已知上下文为 CompassPoint 类型,因此可以使用简写

关联值

Swift 的枚举可以存储称为关联值的附加信息。关联值可以在实例化枚举成员时提供:

  1. enum Barcode {
  2. case upc(Int, Int, Int, Int)
  3. case qrCode(String)
  4. }
  5. var productBarcode = Barcode.upc(8, 85909, 51226, 3)
  6. productBarcode = .qrCode("ABCDEFGHIJKLMN")

原始值

枚举成员可以用相同类型的默认值(称为原始值)预先填充。你可以定义一个原始值类型,Swift 将自动为每个成员分配一个值:

  1. enum Planet: Int {
  2. case mercury = 1
  3. case venus
  4. case earth
  5. case mars
  6. }
  7. let earth = Planet.earth.rawValue // 返回 3

初始化

可以通过原始值初始化枚举,若该原始值对应一个枚举成员则返回该成员;否则返回 nil

  1. if let somePlanet = Planet(rawValue: 3) {
  2. print(somePlanet) // 输出 "earth"
  3. }

Switch 语句匹配

枚举非常适合与 switch 语句联用:

  1. switch direction {
  2. case .north:
  3. print("North")
  4. case .south:
  5. print("South")
  6. case .east:
  7. print("East")
  8. case .west:
  9. print("West")
  10. }

递归枚举

当枚举成员拥有自身类型的关联值时,枚举被称为递归枚举,你可以用 indirect 关键字来声明:

  1. indirect enum ArithmeticExpression {
  2. case number(Int)
  3. case addition(ArithmeticExpression, ArithmeticExpression)
  4. case multiplication(ArithmeticExpression, ArithmeticExpression)
  5. }

递归枚举可以帮助你构建复杂的数据结构和算法,比如用来表示和求解数学表达式。

Swift 枚举通过许多高级功能增强了代码的灵活性和安全性,使其成为处理离散选项时的强大工具。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
千城 关注 已关注

最近一次登录:2024-11-10 20:46:56   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图