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()が定義されていない場合、コードはデフォルト値を使用して「Hola adios」を出力します。

したがって、このことから、正確な署名が一致する場合は、それが優先されると推測します。

この推論は正しいですか?

4

2 に答える 2

13

この動作は、 SID#1のセクション3.1で明確に定義されています。

オーバーロードの解決メソッドアプリケーション式で、複数のオーバーロードされた代替が適用可能な場合、デフォルトの引数を使用する代替が選択されることはありません。

于 2011-02-11T19:24:58.150 に答える
0

はい。適切な署名が見つからない場合にのみ、デフォルトのパラメーターが使用されます。

このトークを参照してください。これを正確に求める人がいます。

于 2011-02-11T19:34:40.693 に答える