scala-meta:在 class 构造函数中解析可变参数

scala-meta: parse vararg in class constructor

如何解析如下所示的 Term 并将解析的参数提取到 class apply 方法。 class apply 方法采用可变参数,因此不知道 class 构造函数中存在多少个参数。

q"""TestClass(TestArg(1,2,"c"), TestArg(10,2,"c"))"""

我需要解析和提取传递给 TestClass apply 方法的两个参数(数量会在运行时改变),该方法采用可变数量的参数(vararg)

您可以使用点对点取消引号语法获取包含参数的 Seq[Tree],然后分别解压每个参数(例如,在 map 调用中)。

val q"TestClass(..$args)" = ???
val result = args.map { case q"""TestArg($a, 2, "c")""" => ??? }