इस वर्ग पर विचार करें:एकाधिक तर्क सूचियों वाले वर्ग से पैटर्न कैसे मिलान करें?
class DateTime(year: Int, month: Int, day: Int)(hour: Int, minute: Int, second: Int)
unapply
विधि कैसा दिखता है, अगर मैं कुछ के खिलाफ मिलान करना चाहता हूं:
dt match {
case DateTime(2012, 12, 12)(12, _, _) => // December 12th 2012, 12 o'clock
/* ... */
}
मैंने यह कोशिश की:
def unapply(dt: DateTime) =
Some((dt.year, dt.month, dt.day),(dt.hour, dt.minute, dt.second))
लेकिन वह वास्तव में काम नहीं किया था।
एकाधिक पैरामीटर सूचियां अच्छी हैं क्योंकि आपके पास एकाधिक var args सूचियां हो सकती हैं। –
शायद यह थोड़ा सा उदाहरण है, लेकिन यदि आप 'केस क्लास माईकेज़ [ए <: विथबार] (ए: ए) (बी: ए # बार)' कह सकते हैं और बॉक्स के बाहर सभी "निफ्टी फीचर्स" प्राप्त कर सकते हैं, तो यह 'एएल' के लिए एनोटेशन के बिना 'वैल एक्स = माईकेस (फूविथबार (...)) (बार (...))' जैसे नए उदाहरण बनाना संभव होगा। 'माईकेस [ए <: विदबार] (ए: ए, बी: ए # बार) जैसे हस्ताक्षर के साथ, आपको' वैल एक्स = माईकेज़ [फूविथबार] (फूविथबार (...), बार (..) के साथ तत्काल होना होगा। ।)) ', क्योंकि टाइप एफरेंस' ए # बार 'के पैरामीटर के रूप में उसी पैरामीटर सूची में निर्दिष्ट होने पर' ए # बार 'के लिए काम नहीं करेगा। – falconepl
केस क्लास प्रलोभन से बचने का एक अन्य कारण। वे भाषा की कई उन्नत विशेषताओं (या अवधारणाओं) के साथ अच्छी तरह से खेल नहीं पाते हैं। – matanster