अगर मैं एक संयुक्त सील trait
या abstract class
स्काला का उपयोग करता हूं और फिर पैटर्न मिलान का उपयोग करता हूं, तो मुझे आश्चर्य है कि क्या कंपाइलर को इस विशेष पैटर्नमैच के लिए संकलन समय पर नहीं पता है कि इस विशेषता / वर्ग के संभावित कार्यान्वयन क्या उपलब्ध हैं? इसलिए, अगर ऐसा होता है, तो क्या यह पैटर्न मैच की चेतावनी नहीं दे सकता है, भले ही यहtrait
/ abstract class
को सील नहीं किया गया हो, क्योंकि वह जानता है कि किस प्रकार का उपयोग किया जा सकता है, सभी संभव निर्भरता / आयात की जांच करके?
जैसे अगर मैं ए Option[A]
और मैं केवल उसी के लिए पैटर्न मिलान करता हूं, Some[A]
लेकिन नहीं None
, तो कंपाइलर शिकायत करेगा, क्योंकि Option
सील है।
यदि संकलक यह नहीं जान सकता / हल कर सकता है, तो वह क्यों नहीं कर सकता है? और यदि कंपाइलर (सैद्धांतिक रूप से) ऐसा कर सकता है, तो इसके क्या कारण हैं कि इसका उपयोग स्काला में नहीं किया जाता है? क्या अन्य भाषाएँ हैं जो इस तरह के व्यवहार का समर्थन करती हैं?
Foo
उपवर्गों के साथ A
, B
, और C
, और अपने पैटर्न मैचों में से सभी के लिए केवल उन तीन से मेल खाते हैं। कुछ भी नहीं मुझे एक नया उपवर्ग जोड़ने से रोकता है D
जो आपके पैटर्न मैचों को उड़ा देगा।
java.lang.ClassLoader
।