礼貌U / aepurniet从这个 reddit的职位。
该语句必须以某些值定义为该语句的前缀,然后进行解析,然后键入checked。可以从中检查表达式的结果类型checked.tpe
。
def main(args: Array[String]): Unit = {
import scala.reflect.runtime._
import scala.tools.reflect.ToolBox
val toolbox = currentMirror.mkToolBox()
val expr = "age > 18"
val eval = s"""
|val age: Int = ???
|$expr
|""".stripMargin
val tree = toolbox.parse(eval)
val checked = toolbox.typecheck(tree)
println(checked.tpe)
}