How do I get type parameter from type with type parameter, inside scala macro?

江枫思渺然 提交于 2019-12-02 04:26:47

问题


I have a type (that, in this case, represents return type of a method), and it is of the form List[Int] (for example).

I know that the type carries that information, because toString results in the proper value, but how can I extract that type? I tried .typeSymbol, but that loses all type information altogether.


回答1:


You can use the TypeRef extractor:

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


来源:https://stackoverflow.com/questions/17166911/how-do-i-get-type-parameter-from-type-with-type-parameter-inside-scala-macro

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!