2011-02-11 18 views
5
class Algo { 
    def a( a : String = "Hola ", b : String = "adios") { 
     print(a) 
     print(b) 
    } 
    def a() { 
     print ("Uh?") 
    } 
} 
object Algo { 
    def main(args : Array[String]) { 
     new Algo().a() 
    } 
} 

प्रिंट Uh? पता हैकैसे स्काला क्या विधि आह्वान करने के लिए (नाम पैरामीटर)

विधि a() परिभाषित नहीं है, तो कोड प्रिंट "होला Adios" डिफ़ॉल्ट मान का उपयोग कर।

तो, मैं इस से कटौती करता हूं कि, अगर एक सटीक हस्ताक्षर मिलान होता है, तो यह preffered है।

क्या यह तर्क सही है?

उत्तर

13

यह व्यवहार स्पष्ट रूप से SID #1, अनुभाग 3.1 में परिभाषित किया गया है।

संकल्प ओवरलोडिंग एक विधि आवेदन अभिव्यक्ति, जब कई अतिभारित विकल्प लागू होते हैं, विकल्प है जो उपयोग डिफ़ॉल्ट तर्क कभी नहीं का चयन किया जाता है।

0

हां। केवल तभी जब कोई फिटिंग हस्ताक्षर नहीं मिलता है तो डिफ़ॉल्ट पैरामीटर उपयोग किए जाते हैं।

this talk देखें, कुछ लड़के वास्तव में इसके लिए पूछते हैं।