То есть на самом деле не распечатав типа, это распечатывания класса.
scala> f[List[Int]]
res17: String = scala.collection.immutable.List[Int]
Используйте TypeTag
, чтобы Получить Типу информацию. Но нет, нет более простого способа. Поскольку это происходит во время выполнения, вам необходимо указать TypeTag
для хранения информации о типе.
scala> import scala.reflect.runtime.universe.{TypeTag, typeOf}
import scala.reflect.runtime.universe.{TypeTag, typeOf}
scala> def f[A](implicit tt: TypeTag[A]): Unit = println(typeOf[A])
f: [A](implicit tt: reflect.runtime.universe.TypeTag[A])Unit
scala> f[List[Int]]
scala.List[Int]
Мы можем сделать это выглядеть более кратким с контекстом, связанный синтаксис:
def f[A : TypeTag]: Unit = println(typeOf[A])
Зачем нужна альтернатива? Реализация, которую вы предоставили, делает то, что вам нужно – emilianogc
Мне просто интересно, могу ли я избежать манифеста - если есть более сжатый способ сделать это –
Вам понадобится макрос, чтобы сделать это без манифеста. Было бы неплохо, если вы хотите учиться, но это, безусловно, не приведет к чему-то более кратким. – emilianogc