如何在 Scala 中定义赋值运算符?

How to define an assignment operator in Scala?

例如,我在下面的包装器 class 中为 Double 定义了一个 +* 加权和运算符:

  class DoubleOps(val double: Double) {
    def +*(other: DoubleOps, weight: Double): DoubleOps =
      new DoubleOps(this.double + other.double * weight)
  }

  object DoubleOps {
    implicit def DoubleToDoubleOps(double: Double) = new DoubleOps(double)
  }

根据这个定义,我可以进行如下计算:

var db: DoubleOps = 1.5
import DoubleOps._
db = db +* (2.0, 0.5)
println(db)

有没有一种方法可以使用赋值运算符计算 db 以获得结果,比如定义一个 +*=,这样我就可以使用:

db +*= (2.0, 0.5)

这可能吗?

import scala.languageFeature.implicitConversions

class DoubleOps(var double: Double) {
  def +*(other: DoubleOps, weight: Double): DoubleOps =
    new DoubleOps(this.double + other.double * weight)

  def +*=(other: DoubleOps, weight: Double): Unit = {
    this.double = this.double + other.double * weight
  }
}

object DoubleOps {
  implicit def DoubleToDoubleOps(double: Double) = new DoubleOps(double)
}

val d: DoubleOps = 1.5

d +*= (2.0, 0.5)