美文网首页Swift学习记录
10、Swift 中的枚举

10、Swift 中的枚举

作者: Fred丶Lee | 来源:发表于2023-04-23 15:57 被阅读0次

Swift 是一种强类型的编程语言,其中的枚举(Enum)是一种非常有用的类型,它可以让代码更具可读性和可维护性。在本篇技术博客中,我们将深入探讨 Swift 中的枚举类型及其用法。

枚举定义

在 Swift 中,定义枚举类型可以使用关键字 enum,并且可以指定枚举成员的名称和类型。以下是一个示例:

enum CompassPoint {
    case north
    case south
    case east
    case west
}

在上面的代码中,我们定义了一个名为 CompassPoint 的枚举类型,其中包含了四个成员:north、south、east 和 west。这些成员可以被视为枚举类型的值。

枚举成员的值

在 Swift 中,每个枚举成员都有一个默认的关联值为 Int 类型,其值从 0 开始递增。例如,在上面的 CompassPoint 枚举中,north 的默认关联值为 0,south 的默认关联值为 1,以此类推。我们可以使用以下代码来访问这些默认值:

print(CompassPoint.north.rawValue) // 输出 0
print(CompassPoint.south.rawValue) // 输出 1
print(CompassPoint.east.rawValue)  // 输出 2
print(CompassPoint.west.rawValue)  // 输出 3

如果我们需要指定自定义关联值,可以在枚举成员名称后使用括号来指定。例如:

enum Planet: Int {
    case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune
}

在上面的代码中,我们定义了一个名为 Planet 的枚举类型,其中每个成员都指定了一个 Int 类型的关联值。在这种情况下,mercury 的关联值为 1,venus 的关联值为 2,以此类推。

枚举的用法

枚举在 Swift 中的使用非常广泛,以下是一些示例:

Switch 语句
可以使用 switch 语句来处理枚举类型。例如:

enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}

func printBarcode(_ barcode: Barcode) {
    switch barcode {
    case .upc(let numberSystem, let manufacturer, let product, let check):
        print("UPC-A: \(numberSystem), \(manufacturer), \(product), \(check).")
    case .qrCode(let productCode):
        print("QR code: \(productCode).")
    }
}

let barcode = Barcode.upc(8, 85909, 51226, 3)
printBarcode(barcode)

在上面的代码中,我们定义了一个名为 Barcode 的枚举类型,其中包含两个成员:upc 和 qrCode。upc 成员有四个 Int 类型的关联值,qrCode 成员有一个 String 类型的关联值。我们编写了一个函数 printBarcode,它接受一个 Barcode 类型的参数,并使用 switch 语句来检查它是哪个成员,并访问其关联值。最后,我们创建了一个 Barcode 类型的实例 barcode,并将其传递给 printBarcode 函数进行处理。

枚举的方法
我们可以在枚举中定义方法来执行特定的操作。例如:

enum Month {
    case january, february, march, april, may, june, july, august, september, october, november, december

    func days() -> Int {
        switch self {
        case .january, .march, .may, .july, .august, .october, .december:
            return 31
        case .april, .june, .september, .november:
            return 30
        case .february:
            return 28
        }
    }
}

let month = Month.february
print(month.days()) // 输出 28

在上面的代码中,我们定义了一个名为 Month 的枚举类型,其中包含了 12 个成员。我们还定义了一个名为 days 的方法,它返回该月份的天数。在 days 方法中,我们使用 switch 语句来检查枚举成员,并根据成员的不同返回不同的值。最后,我们创建了一个 Month 类型的实例 month,并调用了它的 days 方法来获取天数。

关联值的操作
枚举的关联值可以是任何类型,包括其他枚举类型。例如:

enum Furniture {
    enum Material {
        case wood
        case metal
    }

    case chair(Material)
    case table(Material)
}

let chair = Furniture.chair(.wood)
let table = Furniture.table(.metal)

在上面的代码中,我们定义了一个名为 Furniture 的枚举类型,其中包含了两个成员:chair 和 table。每个成员都有一个名为 Material 的嵌套枚举类型作为关联值。我们创建了一个 Furniture 类型的实例 chair 和 table,并使用嵌套枚举类型作为它们的关联值。

结论

Swift 中的枚举类型是一种非常强大和灵活的数据类型,可以让我们更好地组织和管理代码。我们可以使用枚举来定义特定类型的值,并根据需要使用关联值来存储其他数据。我们还可以在枚举中定义方法来执行特定的操作,并使用 switch 语句来处理不同的情况。如果您正在学习 Swift 或者正在开发 Swift 应用程序,枚举是您必须要掌握的一种语言特性

相关文章

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift基础语法-枚举,枚举原始值,枚举相关值,switch提

    1. Swift枚举基本概念 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像...

  • 谈谈Swift中的枚举内存布局

    谈谈Swift中的枚举内存布局谈谈Swift中的枚举内存布局

  • swift3.0- 枚举

    Swift枚举 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 枚举

    Swift枚举:Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 从零学习Swift 02:枚举和可选项

    一:枚举 枚举的定义Swift中的枚举定义枚举类型很简单: 同 OC不同的是,Swift中的枚举不单单可以是Int...

  • Swift - 枚举

    Swift - 枚举 枚举在C和Swift中有所不同, Swift中的枚举, 更加灵活, 更加强大 C 值类型: ...

  • Swift探索(五): Enum & Optional

    一:枚举(Enum) 1. 枚举的基本用法 Swift 中通过 enum 关键字来声明一个枚举 Swift 中的枚...

  • Swift枚举

    枚举简单认识 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增...

  • Swift-07:枚举enum

    这里先介绍一下swift枚举与oc枚举的区别 OC: 枚举只能为Int类型swift : 可以在枚举中定义方法 可...

网友评论

    本文标题:10、Swift 中的枚举

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