2
我有一個類型(在這種情況下,表示方法的返回類型),它的形式是List[Int]
(例如)。如何從類型參數的類型參數,內部scala宏中獲取類型參數?
我知道該類型攜帶該信息,因爲toString
產生適當的值,但我如何提取該類型?我試過.typeSymbol
,但是完全丟失了所有類型的信息。
我有一個類型(在這種情況下,表示方法的返回類型),它的形式是List[Int]
(例如)。如何從類型參數的類型參數,內部scala宏中獲取類型參數?
我知道該類型攜帶該信息,因爲toString
產生適當的值,但我如何提取該類型?我試過.typeSymbol
,但是完全丟失了所有類型的信息。
可以使用TypeRef
提取:
import reflect.runtime.universe._
// or in a macro "c.universe._"
val tpe = weakTypeOf[List[Int]]
// extract type parameters
val TypeRef(_,_, tps) = tpe
// tps has type List[Type]
println(tps.head) // Int