【发布时间】:2018-09-28 09:53:35
【问题描述】:
编译器能够提供关于类型参数的证据,例如:
def foo[A, B](implicit ev: A <:< B): B
在Predef 节目中查看<:< 的类型定义
sealed abstract class <:<[-From, +To] extends (From => To) with Serializable
private[this] final val singleton_<:< = new <:<[Any,Any] { def apply(x: Any): Any = x }
implicit def $conforms[A]: A <:< A = singleton_<:<.asInstanceOf[A <:< A]
- 谁能解释这里的隐式解析链?例如,
$conforms[A]: A <:< A如何说服编译器创建<:<[List[String], Seq[String]]的实例?或<:<[Dog, Animal]。如果(何时).asInstanceOf调用引发异常会发生什么? - 为什么
=>的子类化是必要的?
【问题讨论】:
-
启用它的是
<:<类上的差异。
标签: scala