我可以成功写
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
}
}
}
虽然,Context#literal
is deprecated:
不推荐使用(自版本2.11.0起)使用quasiquotes代替
但是,quasiquotes不提供相同的类型:
context.literal("Hello").splice : context.Expr[String]
q""" "Hello" """ : Universe#Tree
Context#literal
是否有一个未弃用的替代品提供了Expr[T]
而不是Tree
?
答案 0 :(得分:2)
使用context.Expr(q""" "Hello" """)
从树中检索Expr
。