用于Int的Scala-运算符重载

时间:2015-12-16 15:20:50

标签: scala

我是Scala的新手,如果可以选择重载Int加号,我就会徘徊。 例如,假设我希望1+2返回1*2。 我能做这样的事吗?

1 个答案:

答案 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))