Может ли кто-нибудь объяснить мне, почему scala разрешает самое общее неявное независимо от того, является ли локальное расширение неявным более конкретным?
Пример:
import scala.math.ScalaNumber
type Serializer[T] = T => String
object SerializedOps{
implicit class AnyOps[T](t: T){
def serialize(implicit s: Serializer[T]) : String = s(t)
}
}
object Instances{
implicit val scalaNumber : Serializer[ScalaNumber] = _.toString + "_DEFAULT"
}
import SerializedOps._
import Instances._
implicit val bigDecimalCustom : Serializer[BigDecimal] = _.toString + "_CUSTOM"
val res: String = BigDecimal(100).serialize
//res: String = 100DEFAULT
Почему я не могу определить новый неявный более конкретный в моей локальной области видимости? Как влияет разрешение скалы?