我认为这应该很简单:

import spire.math.Rational

val seq  = Vector(Rational(1, 4), Rational(3, 4))
val sum  = seq.sum      // missing: scala.Numeric
val prod = seq.product  // missing: scala.Numeric

我想这只是将正确的内容带入隐式范围的问题。但是我要导入什么?

我可以看到,为了获得RationalIsNumeric,我必须执行以下操作:
import spire.math.Numeric._
implicit val err = new ApproximationContext(Rational(1, 192))
implicit val num = RationalIsNumeric

但这只是给我一个spire.math.Numeric。因此,我尝试使用以下方法:
import spire.math.compat._

但是没有运气...

最佳答案

所需要的只是spire.math.compat.numeric[Rational]的证据:

import spire.math._

val seq = Vector(Rational(1, 4), Rational(3, 4))
implicit val num = compat.numeric[Rational]  // !
seq.sum     // --> 1/1
seq.product // --> 3/16

关于scala - Spire的有理数之和或乘积(如何获得scala.Numeric),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16397160/

10-15 12:09