gpt4 book ai didi

scala - 使用 case 对象实现枚举的优雅方式

转载 作者:行者123 更新时间:2023-12-04 01:58:55 25 4
gpt4 key购买 nike

我正在尝试使用 case 对象模拟枚举行为。
感觉有点冗长,不优雅,我想知道是否有更好的方法来实现这一点。

所以这是一个例子:

sealed trait Operator
object Operator{
def apply(value: String) = value match {
case EqualsOp.name => EqualsOp
case NotEqualOp.name => NotEqualOp
case ContainsOp.name => ContainsOp
case NotContainsOp.name => NotContainsOp
case _ => UnknownOp
}
}

case object EqualsOp extends Operator { val name = "equals" }
case object NotEqualOp extends Operator { val name = "not_equals" }
case object ContainsOp extends Operator { val name = "contains" }
case object NotContainsOp extends Operator { val name = "not_contains" }

有没有更好的方法来获得从字符串到实际案例对象的反向映射?
或者总的来说更好地实现这一点?

最佳答案

我更喜欢这样的方法:

sealed case class ProgressStatus(value: String)

object ProgressStatus {
object IN_PROGRESS extends ProgressStatus("IN_PROGRESS")
object ACCEPTED extends ProgressStatus("ACCEPTED")
object REJECTED extends ProgressStatus("REJECTED")

val values = Seq(IN_PROGRESS, ACCEPTED, REJECTED)
}

获取值:
ProgressStatus.IN_PROGRESS.value

获取所有值:
ProgressStatus.values

关于scala - 使用 case 对象实现枚举的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35776330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com