असल में, मैं इसका उपयोग करने से पहले एक चर में स्टोर किए बिना एक कस्टम निकालने वाला बनने में सक्षम होना चाहता हूं।क्या एक्स्ट्रेक्टर्स को केस स्टेटमेंट के शरीर में पैरामीटर के साथ अनुकूलित किया जा सकता है (या कहीं और जो एक्स्ट्रेक्टर का उपयोग किया जाएगा)?
यह एक वास्तविक उदाहरण नहीं है कि मैं इसका उपयोग कैसे करूंगा, यह नियमित रूप से अभिव्यक्ति या निर्माण के रूप में कुछ अन्य स्ट्रिंग पैटर्न के मामले में उपयोग किया जाएगा, लेकिन उम्मीद है कि यह बताता है कि मैं क्या देख रहा हूं:
def someExtractorBuilder(arg:Boolean) = new {
def unapply(s:String):Option[String] = if(arg) Some(s) else None
}
//I would like to be able to use something like this
val {someExtractorBuilder(true)}(result) = "test"
"test" match {case {someExtractorBuilder(true)}(result) => result }
//instead I would have to do this:
val customExtractor = someExtractorBuilder(true)
val customExtractor(result) = "test"
"test" match {case customExtractor(result) => result}
जब सिर्फ एक कस्टम निकालने कर यह बहुत फर्क नहीं है, लेकिन अगर आप एक मामले बयान के लिए एक्सट्रैक्टर्स की एक बड़ी सूची बना रहे थे, इसके बारे में सभी को अलग करके चीजों को अधिक पढ़ने के लिए मुश्किल बना सकता है उनके उपयोग से निकालने वाले।
मैं उम्मीद करते हैं कि जवाब नहीं आप ऐसा नहीं कर सकते है, लेकिन मैंने सोचा कि मैं चारों ओर पहले से पूछना चाहते हैं: डी
और क्या आपने, उम, * कोशिश की *? स्केला> वैल {someExtractorBuilder (सही)} (परिणाम) = "परीक्षण":: 1: त्रुटि: –
मैं इसे करने की कोशिश की थी, मैं एक सिंटैक्स त्रुटि प्राप्त सरल पैटर्न वैल के अवैध शुरू {someExtractorBuilder (सही)} (परिणाम) = "परीक्षण" ^ –
आखिरकार आप क्या करने की कोशिश कर रहे हैं? बहुत सारे निकालने वालों की तुलना में ऐसा करने का शायद एक बेहतर तरीका है। –