6
क्या पैटर्न पैटर्न में मैक्रो के लिए तर्क का उपयोग करने का कोई तरीका है? मैं यह करना चाहता हूं:मैक्रोज़, स्प्लिस, और पैटर्न मिलान
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 XX = X.splice
लेकिन निश्चित है कि जोड़ के साथ या तो काम नहीं करता है की: आम तौर पर, एक तरह के रूप में पहली बार एक वैल को बताए, द्वारा इस का समाधान होगा।
लेकिन अगर मैं निर्माण किया कि यह काम करेगा में मदद कर सकता है है पेड़ मैन्युअल रूप से (यानी बिना सुधार के)? –
बीटीडब्ल्यू, क्या यह एक बग है जिसे मुझे फिर से c.typecheck-workaround का उपयोग करना है? –
हाँ यह मैनुअल पेड़ निर्माण के साथ काम करेगा। टाइपशेक की बात करते हुए, वर्तमान में यह एक ज्ञात समस्या है। मुझे नहीं पता कि हमारे पास इसके लिए एक बग है, लेकिन यह निश्चित रूप से कुछ है जिसे मैं ठीक करना चाहता हूं। –