Scala如何知道要调用的方法(命名参数)

时间:2011-02-11 18:47:15

标签: scala named-parameters

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”。

因此,我推断,如果确切的签名匹配,那就是优先的。

这种推理是否正确?

2 个答案:

答案 0 :(得分:13)

SID #1第3.1节明确定义了此行为。

  

重载分辨率在方法应用程序表达式中,多次重载时   替代方案适用,使用默认参数的替代方案   永远不会被选中。

答案 1 :(得分:0)

是。只有在找不到拟合签名时才使用默认参数。

请参阅this talk,有些人确切地问这个问题。