我正在尝试将枚举中的值添加在一起,但我找不到如何提取参数化值。
enum Stats:
case MaximumHealth(x: Float)
case HealthRegen(x: Float)
def stuff: Float =
val s1 = Stats.MaximumHealth(20)
val s2 = Stats.MaximumHealth(10)
val sum = s1.value + s2.value // does not work; expected value of 30 (Float)
如何将 20 和 10 加在一起?
您可以创建一个新函数,例如
getStatAsFloat
,它接受 Stats 类型的参数并对其进行模式匹配以获取 Float 值。以下是实现这一目标的方法:
enum Stats:
case MaximumHealth(x: Float)
case HealthRegen(x: Float)
def getStatAsFloat(s: Stats): Float =
s match
case Stats.MaximumHealth(x) => x
case Stats.HealthRegen(x) => x
def stuff: Float =
val s1 = Stats.MaximumHealth(20)
val s2 = Stats.MaximumHealth(10)
val sum = getStatAsFloat(s1) + getStatAsFloat(s2)
sum
stuff => res0: Float = 30.0