如何显示枚举的值

How to display value of enum

使用关联值时,如何显示枚举的关联值?

enum dayOfWeek{
    case Monday(String)
    case Tuesday(String)
    case Wednesday(String)
}

以下失败:

var someDay = dayOfWeek.Wednesday("Wednesday-4")
println(someDay.rawValue)

此外,有没有一种方法可以在枚举创建期间使用关联值对其进行初始化?例如:

enum dayOfWeek{
    case Monday(String: "Monday-2")
    case Tuesday(String: "Tuesday-3")
    case Wednesday(String: "Wednesday-4")
}
enum dayOfWeek: String{
    case Monday = "Monday-2", Tuesday = "Tuesday-3"
}

OtherDay.Monday.rawValue

dayOfWeek是枚举,你有枚举的MondayTuesdayMonday的关联值已设置为"Monday-2"。要获得此值,您可以使用枚举

.rawValue

您可能会将原始值与关联值混淆。您可以将枚举案例的原始值视为案例所代表的基础值。如果那是你想要的,你可以这样指定:

enum DayOfWeek : String {
    case Monday = "Monday"
    case Tuesday = "Tuesday"
    case Wednesday = "Wednesday"
    // ...
}

String是原始值类型,"Monday""Tuesday"等是原始值,可以这样访问:

let day = DayOfWeek.Monday
println(day.rawValue)  // "Monday"
另一方面,

关联值是与枚举案例的特定实例关联的附加值。问题中的代码使用关联值,因此您将在创建每个特定实例时指定一个值:

enum DayOfWeek {
    case Monday(String)
    case Tuesday(String)
    case Wednesday(String)
    // ...
}

let day = DayOfWeek.Monday("The worst")

但是,如果没有 switch 语句,您将无法提取该值:

switch day {
case .Monday(let description):
    println(description)
default:
    break
}