Как ClassTags доступны в Scala? - PullRequest
       41

Как ClassTags доступны в Scala?

0 голосов
/ 25 сентября 2018

При

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 и пакете отражения в исходном коде мне не помог.

1 Ответ

0 голосов
/ 25 сентября 2018

Ответ содержится в документации для класса:

Если требуется неявное значение типа u.ClassTag [T], компилятор создаст его наспрос.

...