我试图避免在比赛中重复长准引号。所以,我想转换这个:
def appendTree(clazz: ClassDef, tree: Tree): ClassDef =
clazz match {
case q"$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents { $self => ..$stats }" =>
q"$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents { $self => ..$stats; ..$tree }"
}
像这样:
val clazzQuote = "$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents { $self => ..$stats }"
def appendTree(clazz: ClassDef, tree: Tree): ClassDef =
clazz match {
case q"$clazzQuote" =>
q"$mods class $tpname[..$tparams] $ctorMods(...$paramss) extends { ..$earlydefns } with ..$parents { $self => ..$stats; ..$tree }"
}
我试图用字符串插值做的一个可比较的例子:
val msg = "hello $name"
"hello world" match {
case s"$msg" => println(name) // I want this to output "world"
}
这个例子也不起作用。
我怎样才能做到这一点?(或者我可以吗?)