我有一个像这样的简单枚举:
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
为了给予应有的认可,这个想法的最初想法来自 Sean Ross在回答一个与此重复的问题时 https://stackoverflow.com/questions/4346580/how-to-add-a-method-to-enumeration-in-scala?rq=1.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)