Scala中如何提供ClassTag?

时间:2018-09-25 11:39:08

标签: scala implicit classtag

使用

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

答案在课程的documentation中:

  

如果需要类型u.ClassTag [T]的隐式值,则编译器将按需进行补偿。