Getting Parameters from Scala Macro Annotation erläutert, wie Parameter von einer Makroannotation abgerufen werden. Allerdings, wenn ich mehrere Parameter mit Standardwerten haben:Makroannotation mit Standardargumenten
class Foo(b: Boolean = false, i: Int = 0) extends StaticAnnotation { ... }
brauche ich (auf der Grundlage der Antwort auf diese Frage)
val (b, i) = c.prefix.tree match {
case q"new Foo(..$args)" => ???
}
Die Logik in ???
zu schreiben scheint sehr böse zu werden: Ich brauche um sowohl positionale als auch benannte Parameter zu handhaben, keinen einfachen Zugriff auf die Standardwerte usw. Gibt es eine Möglichkeit, es zu vereinfachen?
Bisher gibt es keinen besseren Weg, leider. –
Wenn Sie die Werte der Parameter abrufen müssen, funktioniert dies: http://Stackoverflow.com/a/42961043/3669757 – eje