如何在 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)
例如,我在下面的包装器 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)