目前我写了一些丑陋的代码
def div(dividend: Int, divisor: Int) = { val q = dividend / divisor val mod = dividend % divisor (q, mod) }
是否在标准库中指定?
游戏有点晚了,但是自从Scala 2.8起作用:
import scala.math.Integral.Implicits._ val (quotient, remainder) = 5 /% 2
否(除了BigInt
,如其他答案中所述),但您可以添加它:
implicit class QuotRem[T: Integral](x: T) { def /%(y: T) = (x / y, x % y) }
适用于所有整体类型.您可以通过为每种类型创建单独的类来提高性能,例如
implicit class QuotRemInt(x: Int) extends AnyVal { def /%(y: Int) = (x / y, x % y) }
在BigInt
,注意/%
操作,它提供与分区和提醒的对(见API).请注意例如
scala> BigInt(3) /% BigInt(2) (scala.math.BigInt, scala.math.BigInt) = (1,1) scala> BigInt(3) /% 2 (scala.math.BigInt, scala.math.BigInt) = (1,1)
其中第二实例涉及从隐式转换Int
到BigInt
.