Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 打印类型参数';s型_Scala - Fatal编程技术网

Scala 打印类型参数';s型

Scala 打印类型参数';s型,scala,Scala,鉴于: 我想替换定义以打印出A的类型 是否有以下替代方案: scala> def f[A]: Unit = ??? f: [A]=> Unit 这实际上不是打印出类型,而是打印出类 scala> def f[A](implicit manifest: scala.reflect.Manifest[A]) = manifest.toString f: [A](implicit manifest: scala.reflect.Manifest[A])String scala&g

鉴于:

我想替换定义以打印出
A
的类型

是否有以下替代方案:

scala> def f[A]: Unit = ???
f: [A]=> Unit

这实际上不是打印出类型,而是打印出类

scala> def f[A](implicit manifest: scala.reflect.Manifest[A]) = manifest.toString
f: [A](implicit manifest: scala.reflect.Manifest[A])String

scala> f[String]
res10: String = java.lang.String
使用
TypeTag
获取类型信息。但是,没有比这更简单的方法了。因为这是在运行时发生的,所以需要
TypeTag
来保存类型信息

scala> f[List[Int]]
res17: String = scala.collection.immutable.List[Int]
我们可以使用上下文绑定语法使其看起来更简洁:

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])