这是带有相关值的常见枚举。
enum MultiplierType {
case width(Double)
case height(Double)
case xxxxx1(Double)
case xxxxx2(Double)
case xxxxx3(Double)
var value: Double {
switch self {
// Normal way.
case let .width(value):
return value
case let .height(value):
return value
case let .xxxxx1(value):
return value
...
}
}
}
我的问题是怎么做?
var value: Double {
switch self {
// How to get the value in one case?
case let .width(value), .height(value), .xxx:
return value
}
}
或
var value: Double {
switch self {
// How to get the value in one case?
case let .width, .height, .xxx (value):
return value
}
}
获得相关价值的最优雅的方法是什么?
答案 0 :(得分:8)
您可以将多个枚举值放在同一行case
中,但是必须将let
移到()
中:
var value: Double {
switch self {
case .width(let value), .height(let value), .xxxxx1(let value):
return value
}
}
您可能希望将每个enum
值放在单独的行上:
var value: Double {
switch self {
case .width(let value),
.height(let value),
.xxxxx1(let value):
return value
}
}
不幸的是,这与具有关联值的enum
一样优雅。如果没有显式列出enum
,就无法获得关联的值。
您只能在同一行中合并具有相同类型关联值的值,并且所有值都必须绑定到相同的变量名。这样,在下面的代码中,无论匹配哪种value
模式,您都知道enum
是绑定的,其类型是什么。