我试图在枚举中组织一堆字符串参数。这样我就可以排除错别字的可能性。
enum CompassPoint: String {
case n = "North"
case s = "South"
case e = "East"
case w = "West"
}
如果我这样做,则需要使用.rawValue
来访问字符串。那太丑了。
如果我这样做:
enum CompassPointAlt: String {
case n
case s
case e
case w
var str: String {
switch self {
case .n: return "North"
case .s: return "South"
case .e: return "East"
case .w: return "West"
}
}
}
我必须使用.str
属性来获取值。这在视觉上更加明确,但声明繁琐。
必须有更好的方法。有人给我小费吗? 谢谢
答案 0 :(得分:2)
您可以进行以下更改:
import Foundation
enum Test: String, CustomStringConvertible {
case n = "North"
case s = "South"
case e = "East"
case w = "West"
var description: String {
return self.rawValue
}
}
print("Enum: \(Test.n)") // Prints: Enum: North
CustomStringConvertible
使您可以在description
变量中运行代码,而无需在要转换为字符串时显式引用它。如果您不需要枚举具有上面类似的Hi
和Bye
之类的自定义关联值,并且希望将类型名打印出来,那么就可以做到这一点了:>
import Foundation
enum TestSmall {
case North
case South
}
print("Enum: \(TestSmall.North)") // prints: Enum: North
答案 1 :(得分:1)
如果您最想将枚举用于常量,则可以将static与enum结合使用
enum CompassPoint {
static let n = "Nort"
static let s = "South"
static let e = "East"
static let w = "West"
}