为什么scala编译器在重载并且具有泛型类型参数时无法找到隐式参
发布时间:2020-12-16 08:47:50 所属栏目:安全 来源:网络整理
导读:Scala 2.8.1 采用以下类层次结构 abstract class Aclass B extends Aclass C extends A 为什么scala编译器在下面发送B实例时无法找到send的隐式参数 implicit def routingKeyFor[T : A](value: T) = value.getClass.getSimpleNameimplicit def routingKeyFor
Scala 2.8.1
采用以下类层次结构 abstract class A class B extends A class C extends A 为什么scala编译器在下面发送B实例时无法找到send的隐式参数 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) 为什么在重命名routingKeyFor的通用版本时,编译器能够找到隐式参数的值? implicit def someOtherName[T <: A](value: T) = value.getClass.getSimpleName 解决方法
第二个隐含的是遮蔽第一个.为什么有人在猜测,你可能会为它打开一个问题(在验证之前没有报告之后),但它可能只是将扳手引入类型推断的工作之一.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读