Cela compile bien :
def walk[X](a: X)(f: X => Boolean): Boolean = f(a)
walk(1)(_ => true)
Cela compile bien aussi :
def walk(a: Int)(f: Int => Boolean = _ => true): Boolean = f(a)
walk(1)()
Ce n'est pas le cas :
def walk[X](a: X)(f: X => Boolean = _ => true): Boolean = f(a)
walk(1)()
L'erreur est :
Erreur :(1, 38) type de paramètre manquant
La solution de contournement évidente consiste à utiliser (_: X) => true
mais pourquoi cette erreur ? Je pensais que lorsque la deuxième liste de paramètres est traitée, les informations de type obtenues à partir de la première liste devraient déjà être disponibles ?
Testé avec Scala 2.11.8 et 2.12.1