在Scala宏中匹配泛型类型

时间:2014-09-05 12:32:50

标签: scala generics macros types

我有一个带有参数 x 的Scala(2.10)def宏。它的身体看起来像这样:

if (x.actualType =:= typeOf[generic.Type[String]]) {
  // branch 1: do something with x
}
else {
  // branch 2: do something else
}

无法访问 generic.Type 类本身的实现,并且无法修改其实现。现在,我喜欢这个宏来调用分支1,不仅仅是为了 generic.Type [String] ,而是为了 generic.Type [T] ,其中< em> T 是任何类型。

有没有规范的方法来实现这一目标?或者是使用AST手动执行此操作的唯一选项吗?

1 个答案:

答案 0 :(得分:2)

尝试x.actualType.typeSymbol == typeOf[generic.Type[_]].typeSymbol