跳到主要内容

Swift中的枚举

提示
  1. 定义Swift枚举:Swift中的枚举是用enum关键字定义的,用于创建具有一组固定相关值的数据类型。例如,enum Season { case spring, summer, autumn, winter }定义了一个Season枚举,包含四个季节的值。
  2. 枚举变量的创建和赋值:可以创建枚举类型的变量,并使用枚举名和.符号为其赋值。例如,var currentSeason = Season.summersummer赋给currentSeason
  3. 枚举与Swift Switch语句的结合:枚举可以与Swift中的switch语句结合使用,提供对枚举值的条件判断。例如,switch(size) { case .small: print("小尺寸") ... }根据size枚举值执行不同的代码块。

在 Swift 中,枚举(简称 enum,全称 enumeration)是一种用户定义的数据类型,它拥有一组固定的相关值。

我们使用 enum 关键字来创建一个枚举。例如,

enum Season {
case spring, summer, autumn, winter
}

在这里,

  • Season - 枚举的名称
  • spring/summer/autumn/winter - 在枚举内定义的值

注意:枚举值也被称为 枚举案例。我们使用 case 关键字在枚举内声明值。

创建枚举变量

由于枚举是一种数据类型,我们可以创建枚举类型的变量。例如,

var currentSeason: Season

在这里,currentSeason 是一个 Season 类型的变量。它只能存储枚举内的值(spring, summer, autumn, winter)。

为枚举变量赋值

我们使用枚举名和 . 符号来为枚举变量赋值。例如,

// 将 summer 赋值给 currentSeason 变量
var currentSeason = Season.summer

在这里,我们将成员值 summer 赋给了枚举变量 currentSeason

示例:Swift 枚举

// 定义枚举
enum Season {

// 定义枚举值
case spring, summer, autumn, winter
}

// 创建枚举变量
var currentSeason: Season

// 为枚举变量赋值
currentSeason = Season.summer

print("当前季节:", currentSeason)

输出

当前季节: summer

在上面的示例中,

  • Season - 一个拥有 4 个值的枚举:spring, summer, autumn, winter
  • currentSeason - 枚举类型的变量
  • currentSeason = Season.summer - 将枚举值赋给 currentSeason

注意:类似于变量,我们也可以在单行中创建枚举变量并赋值。例如,

var lastSeason = Season.spring

Swift 枚举与 Switch 语句

我们还可以在 Swift 中将枚举与switch 语句结合使用。例如,

enum PizzaSize {
case small, medium, large
}

var size = PizzaSize.medium

switch(size) {
case .small:
print("我点了一个小尺寸的披萨。")

case .medium:
print("我点了一个中尺寸的披萨。")

case .large:
print("我点了一个大尺寸的披萨。");
}

输出

我点了一个中尺寸的披萨。

在上面的示例中,我们创建了一个名为 PizzaSize 的枚举,其值为:small, medium, large。注意这个语句,

var size = PizzaSize.medium

在这里,我们将值 medium 赋给了枚举变量 size

我们在 switch 语句中使用了枚举变量 size。该值与每个 case 语句的值进行比较。

由于值与 case .medium 匹配,因此执行了该情况下的语句。

遍历枚举案例

在 Swift 中,我们使用 CaseIterable 协议来遍历一个枚举。例如,

enum Season: caseIterable {
...
}

现在我们可以使用 allCases 属性来循环遍历枚举的每个案例。

for currentSeason in Season.allCases {
...
}

示例:遍历枚举案例

// 使语言符合 CaseIterable
enum Season: CaseIterable {
case spring, summer, autumn, winter
}

// for 循环遍历所有情况
for currentSeason in Season.allCases {
print(currentSeason)
}

输出

spring
summer
autumn
winter

在上面的例子中,我们让枚举 Season 符合 CaseIterable 协议。

然后我们使用 allCases 属性和 for 循环 来遍历枚举的每一个案例。

Swift 枚举中的 rawValue

在 Swift 中,我们还可以为每个枚举案例赋值。例如,

enum Size : Int {
case small = 10
case medium = 12
...
}

在这里,我们分别为枚举案例 smallmedium 赋值 1012。这些值被称为原始值

注意,我们在枚举名字后使用了 Int 来定义枚举案例只能包含整数原始值。

访问枚举的原始值

要访问枚举的原始值,我们使用 rawValue 属性。例如,

// 访问原始值
Size.small.rawValue

在这里,我们访问了 small 案例的值。

示例:带原始值的枚举

enum Size : Int {
case small = 10
case medium = 12
case large = 14
}

// 访问 python 案例的原始值
var result = Size.small.rawValue
print(result)

输出

10

在上面的例子中,我们创建了名为 Size 的枚举,它具有 Int 类型的原始值。

这里,我们使用 rawValue 属性访问了 small 案例的值。

注意:原始值可以是字符串、字符、整数或浮点数类型。

Swift 枚举关联值

在 Swift 中,我们还可以为枚举案例附加额外信息。例如,

enum Laptop {

// 关联值
case name(String)
...
}

在这里,对于 name 案例,我们可以附加一个 String 类型的值。

现在,我们可以为案例分配关联值。

Laptop.name("Razer")

在这里,Razername 案例的关联值。

示例:枚举关联值

enum Laptop {

// 关联字符串值
case name(String)

// 关联整数值
case price (Int)
}

// 传递字符串值给 name
var brand = Laptop.name("Razer")
print(brand)

// 传递整数值给 price
var offer = Laptop.price(1599)
print(offer)

输出

name("Razer")
price(1599)

在上面的例子中,关联值

  • Razer 被分配给了 name 案例。
  • 1599 被分配给了 price 案例。

要了解更多关于关联值的信息,请访问 Swift 枚举关联值