स्काला के अनुसार Section 4.6.3 विनिर्देश:बार-बार पैरामीटर के साथ स्कैला अनुभाग में डिफ़ॉल्ट तर्कों की अनुमति क्यों नहीं है?
यह एक दोहराया पैरामीटर के साथ एक पैरामीटर अनुभाग में किसी भी डिफ़ॉल्ट तर्क को परिभाषित करने के लिए अनुमति नहीं है।
वास्तव में, यदि मैं निम्नलिखित मामले वर्ग को परिभाषित:
case class Example(value: Option[String] = None, otherValues: String*)
परिणाम मैं उम्मीद है विनिर्देश के अनुसार:
error: a parameter section with a `*'-parameter is not allowed to have default arguments
case class Example(value: Option[String] = None, otherValues: String*)
लेकिन सवाल यह क्यों है अनुमति नहीं हैं? कक्षा का पहला तर्क बार-बार तर्क से पूरी तरह से स्वतंत्र है, तो यह प्रतिबंध क्यों है?
सही, कुल समझ में आता है। जवाब पढ़ने के बाद यह इतना स्पष्ट प्रतीत होता है कि मुझे खुद को समझने के लिए थोड़ा मूर्ख नहीं लगता :) – djsecilla
यह अस्पष्टता केवल एक अस्पष्टता है यदि आप इसे चाहते हैं। आपका उदाहरण रुबी में पूरी तरह से ठीक काम करता है, उदाहरण के लिए, और रुबी के पास इसका मार्गदर्शन करने वाले प्रकारों का लाभ भी नहीं है। रूबी भी शुरुआत और अंत में (स्थितित्मक) पैरामीटर सूची के अंत में अनिवार्य स्थितित्मक पैरामीटर की अनुमति देता है। असल में, शुरुआत में अनिवार्य स्थितित्मक पैरामीटर पहले बाएं से दाएं बाध्य होते हैं, फिर अंत में बाएं से दाएं अनिवार्य स्थितित्मक पैरामीटर, फिर वैकल्पिक स्थितित्मक पैरामीटर बाएं से दाएं, फिर शेष स्थितित्मक पैरामीटर। –
यह सब अनिवार्य कीवर्ड पैरामीटर, वैकल्पिक कीवर्ड पैरामीटर, और आखिरकार बाकी कीवर्ड पैरामीटर के बाद होता है। इसलिए, कारण जरूरी नहीं है कि "इसे स्पष्ट नहीं किया जा सकता", बल्कि "इसे स्पष्ट बनाना, शेष भाषा की सादगी के साथ अच्छी तरह फिट नहीं है"। इसलिए, अगर हम रूबी नियमों का पालन करते हैं, तो 'हैलो' '' मूल्य 'और 'सेक (" दुनिया ") से जुड़ा हुआ है,' रुबी नियमों का पालन करता है 'और कोई अस्पष्टता नहीं है। –