Как можно использовать квазицитаты, чтобы получить тип значения? - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь написать следующее:

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) в tpe и присвоить его U. Как это сделать?

1 Ответ

2 голосов
/ 20 апреля 2019

Попробуйте

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

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

Связанный вопрос: Как получить тип значения, которое представляет AST?

...