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 回答