我是Scala的新手,如果可以选择重载Int
加号,我就会徘徊。
例如,假设我希望1+2
返回1*2
。
我能做这样的事吗?
答案 0 :(得分:4)
您不能重载最终类的方法,例如Int
。您只能添加新的(扩展名)方法:
implicit class IntPlusPlus(private val a: Int) extends AnyVal {
def ++ (b: Int): Int = a * b
}
assert(2 ++ 3 == 6)
或者,如果您想将+
用于不同的内容,请引入其他类型:
class MyInt(val self: Int) extends Proxy {
def + (b: MyInt): MyInt = new MyInt(self * b.self)
}
assert(new MyInt(2) + new MyInt(3) == new MyInt(6))