Как Scala знает, какой метод вызывать (именованные параметры) - PullRequest
5 голосов
/ 11 февраля 2011
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 ]

13 голосов
/ 11 февраля 2011

Это поведение четко определено в SID # 1 , раздел 3.1.

Разрешение перегрузки В выражении приложения метода при многократной перегрузке применимы альтернативы, которые используют аргументы по умолчанию никогда не выбирается.

0 голосов
/ 11 февраля 2011

Да. Параметры по умолчанию используются только в том случае, если подходящая подпись не найдена.

См. этот разговор , какой-то парень просит именно это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...