Cette compile bien:Pourquoi un littéral de fonction utilisé comme argument par défaut nécessite un type de paramètre?
def walk[X](a: X)(f: X => Boolean): Boolean = f(a)
walk(1)(_ => true)
Cette compile bien ainsi:
def walk(a: Int)(f: Int => Boolean = _ => true): Boolean = f(a)
walk(1)()
Cela ne signifie pas:
def walk[X](a: X)(f: X => Boolean = _ => true): Boolean = f(a)
walk(1)()
L'erreur est:
Error:(1, 38) missing parameter type
L'évidence w orkaround est d'utiliser (_: X) => true
, mais pourquoi est-ce une erreur? Je pense que lorsque la deuxième liste de paramètres est en cours de traitement, tapez l'information obtenue à partir du premier devrait déjà être disponible?
Scala Testé avec 2.11.8 et 2.12.1
Argh J'ai accidentellement retiré mon commentaire :) OK ouais, j'ai réalisé que trop, mais s'il vous plaît ne pas modifier pour mettre l'accent sur le problème (ou mieux encore, supprimer ces lignes tout à fait; problème dans la définition, pas l'invocation) – slouc