2011-02-11 11 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() 
    } 
} 

impresiones Uh?¿Cómo sabe lo Scala método a invocar (parámetros con nombre)

Si no se define el método a(), se imprime el código "hola adiós" utilizando los valores por defecto.

Por lo tanto, de esto deduzco que si una firma exacta es coincidente, eso es preferible.

¿Este razonamiento es correcto?

Respuesta

13

Este comportamiento está claramente definido en SID #1, sección 3.1.

Sobrecarga Resolución En una expresión aplicación método, cuando múltiples sobrecargados alternativas son aplicables, la alternativa que utilizan argumentos predeterminados nunca es seleccionados.

0

Sí. Solo si no se encuentra una firma de ajuste, se utilizan los parámetros predeterminados.

Ver this talk, alguien pregunta exactamente por esto.

Cuestiones relacionadas