1

def fn[T: ClassTag](...)

需要有一个可用的隐式 ClassTag[T]。这些是如何提供的?是否有 ClassTags 的列表?我看到一个implicit val c: ClassTag[Any]不会削减它,因为 ClassTag 是不变的。以及如何为自定义类提供 ClassTags?例如,在

import scala.reflect.ClassTag
class A
def fn[T: ClassTag](e: T) = Array.fill[T](1)(e)
fn(new A())

ClassTag[A] 来自哪里?此代码无需我定义即可编译。

在 Predef 和源代码中的反射包中搜索隐式并没有帮助我。

4

1 回答 1

3

答案在课程的文档中:

如果需要一个类型为 u.ClassTag[T] 的隐式值,编译器将按需生成一个。

于 2018-09-25T11:49:21.410 回答