需要更高的前端
i HAVA与自定义操作员的类
case class Num(var value:Int) {
def add(x:Num) = Num(value + x.value)
def mul(x:Num) = Num(value * x.value)
}
所以我可以像这样称呼它们
val a = Num(2)
val b = Num(3)
val c = Num(4)
val m1 = a add b mul c
但是如何在add
之前执行mul
?我看到了像+|
一样的解决方案,而不是add
,但是我希望在操作员中包含字母,而+add
和*mul
不起作用。我也想包含一个pow
功能,因此比mul
您可以在添加后使用括号。
val m1 = a add (b mul c) = 14
val m1 = a add b mul c = 20
update
您在命名方法方面没有任何限制。例如,您可以为类定义方法 , - , *等。
case class Num(var value:Int) {
def + (x:Num) = Num(value + x.value)
def *(x:Num) = Num(value * x.value)
}
object Num extends App {
val a = Num(2)
val b = Num(3)
val c = Num(4)
val m1 = a + b * c
println(m1)
}
输出
Num(14)