gpt4 book ai didi

scala:向枚举添加方法

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

我有一个像这样的简单枚举:

object ConditionOperator extends Enumeration {

val Equal = Value("equal")
val NotEqual = Value("notEqual")
val GreaterOrEqual = Value("greaterOrEqual")
val Greater = Value("greater")
val LessOrEqual = Value("lessOrEqual")
val Less = Value("less")

我想为每个枚举添加一个方法,以便我可以这样使用它:
def buildSqlCondition(field: String, operator: ConditionOperator.Value, value: String ) = {
val sqlOperator = operator.toSql
[...]

所以,ConditionOperator.Equal.toSql 会返回“=”,而 ConditionOperator.NotEqual.toSql 会返回“<>”,等等...

但是我不知道如何定义 toSql 方法,以便每个枚举可以“看到”它自己的值并决定如何将自身转换为 sql 运算符...

最佳答案

这是我从过去对该主题的各种搜索中找到的关于 Scala 2.9.2 的示例:

object Progress extends Enumeration {
type enum = Value

val READY = new ProgressVal {
val isActive = false
def myMethod: Any = { .. }
}

val EXECUTE = new ProgressVal {
val isActive = true
def myMethod: Any = { .. }
}

val COMPLETE = new ProgressVal {
val isActive = false
def myMethod: Any = { .. }
}

protected abstract class ProgressVal extends Val() {
val isActive: Boolean
def myMethod: Any
}
implicit def valueToProgress(valu: Value) = valu.asInstanceOf[ProgressVal]
}
type Progress = Progress.enum
  • implicit 是使其可用的关键。
  • type enumtype Progress 有点多余;我将它们包括在内以将这两个概念作为我发现有用的东西。


  • 为了给予应有的信任,最初的想法来自 Sean Ross in a response to a question of which this one is a duplicate

    关于scala:向枚举添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12345823/

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