Prenez la hiérarchie de classe suivante
abstract class A
class B extends A
class C extends A
Pourquoi le compilateur scala incapable de trouver le paramètre implicite send
lors de l'envoi d'une instance de B
ci-dessous
implicit def routingKeyFor[T <: A](value: T) =
value.getClass.getSimpleName
implicit def routingKeyFor(value: C) = "custom C"
def send[T <: A](value: T)(implicit createRoutingKey: T => String):
Validation[Throwable, String] = Success(createRoutingKey(value))
val resultOfSendingB = send(new B)
val resultOfSendingC = send(new C)
Pourquoi le compilateur est-il capable de localiser la valeur du paramètre implicite lorsque la version générique de routingKeyFor
est renommée?
implicit def someOtherName[T <: A](value: T) =
value.getClass.getSimpleName