![](/img/trans.png)
[英]Unapply/pattern matching with scala macros and quasiquotes for knownDirectSubclasses
[英]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.