Scala:BigDecimal是数字的隐式证据

Scala:BigDecimal是数字的隐式证据,scala,implicit,Scala,Implicit,如何将scala.math.BigDecimal隐式转换为scala.math.Numeric 例如:对于Int隐式转换链,跟踪方式如下:Int到RichInt(转换在Predef中定义)和方法 protected implicit def num: Numeric[T] 来自父类scala.runtime.ScalaNumberProxy scala.math.BigDecimal的棘手之处在于它没有任何包装器 提前感谢。Numeric[T]是一个类型类,因此它不会将BigDecimal转换

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

例如:对于
Int
隐式转换链,跟踪方式如下:
Int
RichInt
(转换在
Predef
中定义)和方法

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

scala.math.BigDecimal
的棘手之处在于它没有任何包装器


提前感谢。

Numeric[T]
是一个类型类,因此它不会将
BigDecimal
转换为
Numeric
;相反,定义了一个隐式的
Numeric[BigDecimal]
,其中包含对
BigDecimal
值进行操作的
Numeric
的实现


此处定义了隐式-

此隐式在
Predef
中是如何显示的?我不需要从
scala.math
导入任何内容,这个隐式函数就可以工作。请详细说明。好问题。隐式实例存在于Numeric的伴随对象中,这是scala查找隐式值的地方之一。它将检查伴随的隐式类型(数值)及其类型参数(BigDecimal)和当前范围。为了更好地理解这一点,您需要阅读scala在何处查找隐式-因此,在定义自己的隐式(或者更好的是,类型类实例)时,请尝试将它们保留在关联的伴生对象中。非常感谢,现在它完全有意义了:)