Scala:BigDecimal是Numeric的隐含证据

时间:2017-05-01 00:19:47

标签: scala implicit

scala.math.BigDecimal如何隐式转换为scala.math.Numeric

例如:for Int隐式转化链的跟踪方式如下:IntRichIntPredef中定义的转化)和方法

protected implicit def num: Numeric[T]
来自父类scala.runtime.ScalaNumberProxy

scala.math.BigDecimal的棘手部分是它没有任何包装器。

提前致谢。

1 个答案:

答案 0 :(得分:2)

Numeric[T]是一个类型类,因此它不会将BigDecimal转换为Numeric;相反,我们定义了一个隐式Numeric[BigDecimal],其中包含Numeric的{​​{1}}值的实现。

这里定义隐式 - https://github.com/scala/scala/blob/2.12.x/src/library/scala/math/Numeric.scala#L187