首页 > 解决方案 > 如何使用准引号来获取值的类型?

问题描述

我正在尝试编写以下内容:

val value: Int = 3
val tpe = typeOf(value)    // This is pseudocode. What should
                           // actually go on this line?
q"""
type U = $tpe
val v: U = $value
"""

本质上,我需要捕获value( Int) in的类型tpe并将其分配给U. 如何做到这一点?

标签: scalascala-macrosscala-quasiquotesscalameta

解决方案


尝试

import scala.reflect.runtime.universe._
def getType[A: TypeTag](a: A): Type = typeOf[A]

val value: Int = 3
val tpe = getType(value) // Int

相关问题:如何获得 AST 所代表的值的类型?


推荐阅读