簡體   English   中英

宏,拼接和模式匹配

[英]macros, splice, and pattern matching

有沒有辦法在模式匹配中對宏使用參數? 我想這樣做:

def extr(X:AnyRef) = macro extrImpl

def extrImpl(c:Context)(X:c.Expr[AnyRef]):c.Expr[AnyRef] = {
  import c.universe._

  val tree = reify {
    new {
      def unapply(x:String):Option[String] = x match {
        case X.splice => Some(x) //error
        case _ => None
      }
    }
  }.tree
  c.Expr(c.typeCheck(tree))
}

但是不幸的是,編譯器說“需要穩定的標識符,但是找到了X.splice”。 通常,可以通過先分配一個val來解決此問題,例如:

val XX = X.splice

但是,當然這對拼接也不起作用。

不幸的是,目前尚不可能(並且在2.10.0-final中將無法實現),但是我們正在進行一些工作,可能會在以后的版本發布中有所幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM