【发布时间】:2025-11-26 02:40:02
【问题描述】:
对于函数,隐式参数可以有一个arg.type,其中arg 在显式参数列表中。但显然,不是一个类:
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_51).
scala> trait Applicable[A]
defined trait Applicable
scala> def f(a: AnyRef)(implicit ev: Applicable[a.type]): a.type = ???
f: (a: AnyRef)(implicit ev: Applicable[a.type])a.type
scala> case class Kniption(a: AnyRef)(implicit ev: Applicable[a.type])
<console>:8: error: not found: value a
case class Kniption(a: AnyRef)(implicit ev: Applicable[a.type])
^
<console>:8: error: type mismatch;
found : Applicable[a.type]
required: Applicable[a.type]
case class Kniption(a: AnyRef)(implicit ev: Applicable[a.type])
^
这是错误还是功能?如果这种行为有意义,您能解释一下原因吗?
【问题讨论】:
-
我认为这是一个错误,我为它打开的问题没有关闭issues.scala-lang.org/browse/SI-9491。
标签: scala constructor implicit path-dependent-type singleton-type