我有以下枚举。
object Smth extends Enumeration {
class Value(name: String, func: (String, Int) => Boolean) extends super.Val(name)
private def opA(index: Int) : Boolean ={
index > 0
}
private def opB(x: String, index: Int) : Boolean ={
index > 0 && x.length > 0
}
val x = new Value("X", opA) // type mismatch error for opA
val y = new Value("Y", opB)
}
Enum构造函数将(String, Int) => Boolean
类型的函数作为参数。是否可以创建枚举构造函数,使其接受具有2个不同契约的函数,例如:
(String, Int) => Boolean
(Int) => Boolean
我试图避免在函数定义中使用参数的默认值。
这就是我想要的方式。
if(Smth.x.func(0)) { do smth }
else if(Smth.y.func("str", 0)) { do smthElse }
答案 0 :(得分:0)
如果您只想要默认值,可以这样做:
class Value(val name: String, val func: (String, Int) => Boolean) extends super.Val(name) {
def apply(name: String, func: (Int) => Boolean): Value =
new Value(name, (x -> func("default value", x)))
}