我创建了一个ComplexNumber
课程。我希望能够做类似
val c = ComplexNumber(1,3);
3 * c;
但是这需要为int,double等重载*
。这可能吗?
答案 0 :(得分:4)
您需要为要操作的每种类型定义隐式转换。一个方便的地方是配套对象。
object ComplexNumber {
import scala.language.implicitConversions
implicit def i2cn(i:Int):ComplexNumber = new ComplexNumber(....
}
只要将3 * c
方法定义为*
类的一部分,ComplexNumber
就可以正常工作。
class ComplexNumber(a:Int, b:Int) {
def *(cn:ComplexNumber): ComplexNumber = ...
}