推荐答案
在 Swift 中,枚举成员的原始值(Raw Value)是为枚举成员预先分配的一个默认值。原始值可以是字符串、字符、整数或浮点数类型。每个枚举成员的原始值在定义枚举时被指定,并且在枚举的整个生命周期中保持不变。
enum Direction: String {
case north = "North"
case south = "South"
case east = "East"
case west = "West"
}在这个例子中,Direction 枚举的每个成员都有一个 String 类型的原始值。例如,Direction.north 的原始值是 "North"。
本题详细解读
原始值的定义
原始值是在定义枚举时为每个成员指定的固定值。原始值可以是以下类型之一:
- 整数(
Int) - 浮点数(
Float或Double) - 字符串(
String) - 字符(
Character)
原始值在枚举定义时被指定,并且不能更改。
原始值的访问
可以通过枚举成员的 rawValue 属性来访问其原始值:
let direction = Direction.north print(direction.rawValue) // 输出: "North"
原始值的自动分配
如果枚举的原始值类型是整数或字符串,Swift 可以自动为枚举成员分配原始值。
整数类型:如果没有显式指定原始值,Swift 会从 0 开始自动递增分配原始值。
enum Planet: Int { case mercury = 1, venus, earth, mars } print(Planet.earth.rawValue) // 输出: 3字符串类型:如果没有显式指定原始值,Swift 会使用枚举成员的名称作为原始值。
enum CompassPoint: String { case north, south, east, west } print(CompassPoint.north.rawValue) // 输出: "north"
原始值的初始化
可以通过原始值来初始化枚举成员。如果提供的原始值匹配某个枚举成员的原始值,则返回对应的枚举成员;否则返回 nil。
if let direction = Direction(rawValue: "North") {
print("方向是 \(direction)")
} else {
print("无效的方向")
}原始值与关联值的区别
- 原始值:是枚举成员的一个固定值,定义时指定,不能更改。
- 关联值:是枚举成员的一个可变值,可以在创建枚举实例时指定,并且每个实例可以有不同的关联值。
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}在这个例子中,Barcode 枚举的成员 upc 和 qrCode 有关联值,而不是原始值。