如何从 Scala 中的参数化枚举中获取值

问题描述 投票:0回答:1

我正在尝试将枚举中的值添加在一起,但我找不到如何提取参数化值。

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 加在一起?

scala enums
1个回答
0
投票

您可以创建一个新函数,例如

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
© www.soinside.com 2019 - 2024. All rights reserved.