Scala 2.11中Context#literal的实际替换是什么?

时间:2014-08-09 23:52:41

标签: 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").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

1 个答案:

答案 0 :(得分:2)

使用context.Expr(q""" "Hello" """)从树中检索Expr