मैं सोच रहा हूं कि मैं कई प्रकार के पैटर्न मिलान का उपयोग कैसे कर सकता हूं। मेरे पास है:
abstract class MyAbstract
case class MyFirst extends MyAbstract
case class MySecond extends MyAbstract
case class MyThird extends MyAbstract // shouldn't be matched and shouldn't call doSomething()
val x: MyAbstract = MyFirst
x match {
case a: MyFirst => doSomething()
case b: MySecond => doSomething()
case _ => doSomethingElse()
}
इसलिए मैं कुछ लिखना चाहूंगा:
x match {
case a @ (MyFirst | MySecond) => doSomething()
case _ => doSomethingElse()
}
मैंने कुछ ट्यूटोरियल में समान निर्माण देखा, लेकिन यह मुझे त्रुटि देता है:
pattern type is incompatible with expected type;
[error] found : object MyFirst
[error] required: MyAbstract
तो क्या मामले के खंड में कुछ अलग-अलग प्रकारों को परिभाषित करने का एक तरीका है? मुझे लगता है कि यह कोड को सुंदर बना देगा। जैसे कि मेरे पास उनमें से 5 होंगे, मैं एक ही कोड को 5 बार (doSomething () कॉलिंग) लिखूंगा।
अग्रिम में धन्यवाद!
doSomething
मामलों के लिए एक सामान्य सुपरक्लास है ,case a : MyAbstract
तो तत्कालीन मेल क्यों नहीं ...?