gpt4 book ai didi

scala - 打印类型参数的类型

转载 作者:行者123 更新时间:2023-12-02 05:48:55 24 4
gpt4 key购买 nike

鉴于:

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

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

是否有任何替代方案:
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

最佳答案

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

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]

我们可以使用上下文绑定(bind)语法使它看起来更简洁:
def f[A : TypeTag]: Unit = println(typeOf[A])

关于scala - 打印类型参数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32657420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com