vic*_*aba 1 scala numbers notation
想象一下,我在 Scala 中有类 Imaginary(x) 和类 Real(y)。有没有办法做 ComplexNumber = 3 + 2i 而不是做 ComplexNumber = Real(3) + Imaginary(2) ?
谢谢。
是否3 + 2.i足够?
sealed trait ComplexNumber {
val re: Int
val im: Int
}
case class Real(re: Int) extends ComplexNumber { val im: Int = 0 }
implicit class ToReal(val re: Int) extends AnyVal {
def +(that: Imaginary) = Mixed(re, that.im)
}
case class Imaginary(im: Int) extends ComplexNumber { val re: Int = 0 }
implicit class ToImaginary(val im: Int) extends AnyVal {
def i: Imaginary = Imaginary(im)
}
case class Mixed(re: Int, im: Int) extends ComplexNumber
Run Code Online (Sandbox Code Playgroud)
用法:
scala> 3 + 2.i
res3: Mixed = Mixed(3,2)
Run Code Online (Sandbox Code Playgroud)