【发布时间】:2014-07-09 18:47:54
【问题描述】:
我想对 Scala 宏中的 x -> y 操作树进行模式匹配。我正在针对 Scala 2.10.4(使用 Macro Paradise)和 Scala 2.11.x 进行交叉编译。我尝试了以下模式,但都没有奏效:
arrowTree match {
case q"$x -> $y" => ???
case q"scala.Predef.ArrowAssoc[${_}, ${_}]($x).->$y" => ???
case q"_root_.scala.Predef.ArrowAssoc[${_}, ${_}]($x).->$y" => ???
case q"_root_.scala.Predef.ArrowAssoc($x).->$y" => ???
}
什么模式可以让这个匹配同时适用于 2.10.4 和 2.11.x?
【问题讨论】:
-
什么是
q?我只见过s、f和raw用于字符串插值...那么q是什么? -
准引号,用于从字符串创建树
-
q"$x -> $y"怎么样?您没有在准引号中分配任何变量,它们是不正确的。 -
谢谢我在x和y前面加了$。
标签: scala macros scala-quasiquotes