Scala 2.11中上下文文字的实际替换是什么?
我能成功地写作Scala 2.11中上下文文字的实际替换是什么?,scala,macros,Scala,Macros,我能成功地写作 import scala.reflect.macros.blackbox object WhyDeprecated { def macroImpl[T : context.WeakTypeTag](context: blackbox.Context): context.Expr[String] = { import context.universe._ reify { context.literal("Hello").splic
import scala.reflect.macros.blackbox
object WhyDeprecated {
def macroImpl[T : context.WeakTypeTag](context: blackbox.Context):
context.Expr[String] =
{
import context.universe._
reify {
context.literal("Hello").splice
}
}
}
不过:
已弃用(自版本2.11.0起)改用quasiquotes
但是,Quasikotes不提供相同的类型:
context.literal("Hello").splice : context.Expr[String]
q""" "Hello" """ : Universe#Tree
是否有一种未被弃用的Context#literal
替代品,它提供一个Expr[T]
而不是一个树
?使用Context.Expr(q“Hello”)
从树中检索Expr
。c.Expr[String](q“Hello,world”)
。值得一提的是,宏也可以只返回树?