6
Kalıp eşlemesinde bir makroya argüman kullanmanın bir yolu var mı?makro, ek ve desen eşleme
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))
}
Ama ne yazık ki derleyici diyor "kararlı tanımlayıcı zorunlu değildir, ancak X.splice bulundu": Bunu yapmak istiyorum.
val XX = X.splice
Ama her iki ek yeri ile çalışmıyor tabii: Normalde, bir gibi ilk önce bir val için atayarak bu çözecek.
ama inşa eğer çalışacak yardımcı olabilecek eserlerinde şey var Ağaç el ile (yani reify olmadan)? –
btw, c.typeCheck-geçici çözümünü tekrar kullanmam gereken bir hata mı? –
evet, manuel ağaç yapısıyla çalışırdı. typecheck konuşma, şu anda bu bilinen bir sorundur. Bunun için bir hatam olup olmadığını bilmiyorum, ama kesinlikle düzeltmek istediğim bir şey. –