这是带有关联值的常见枚举。
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
}
}
获得相关价值的最优雅方法是什么?
你可以把多个枚举值在同一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
带有关联值的s一样优雅。如果没有显式列出enum
s ,就无法获得关联的值。
您只能在同一行中合并具有相同类型关联值的值,并且所有值都必须绑定到相同的变量名。这样,在下面的代码中,value
无论enum
匹配哪种模式,您都知道绑定了,它的类型是什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句