scala:为枚举添加方法
发布时间:2020-12-16 18:20:01 所属栏目:安全 来源:网络整理
导读:我有这样一个简单的枚举: object ConditionOperator extends Enumeration { val Equal = Value("equal") val NotEqual = Value("notEqual") val GreaterOrEqual = Value("greaterOrEqual") val Greater = Value("greater") val LessOrEqual = Value("lessOr
我有这样一个简单的枚举:
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 in a response to a question of which this one is a duplicate. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |