Scala的Quasiquotes文档在解释Lifting时提到了这一点:(链接)
引用如下:
可以同时使用lifting和反引号拼接:
scala> val ints = List(1, 2, 3)
scala> val f123 = q"f(..$ints)"
f123: universe.Tree = f(1, 2, 3)
scala> val intss = List(List(1, 2, 3), List(4, 5), List(6))
scala> val f123456 = q"f(...$intss)"
f123456: universe.Tree = f(1, 2, 3)(4, 5)(6)
在代码示例中,具体是在哪里实现了提升(lifting)和取消引用拼接(unquote splicing)?
val x = 5
,那么后面的x
就是5
。引用会给出一个符号,'x
是符号x
本身。稍后你可以取消引用'x
并将其放入代码中,在那里它将引用该上下文中的某些内容。 - muhuk