Il y a un exemple dans "Scala in Depth" où l'auteur explique comment scala peut faire un certain niveau d'inférence sur les arguments passés dans les méthodes. A titre d'exemple, le suivant est affiché:"Les types utilisés dans une fonction sont des littéraux"?
def myMethod(functionLiteral: A => B):Unit
myMethod({ arg:A => new B})
myMethod({ arg => new B})
Juste pour savoir ce que l'auteur parle, je fais ce qui suit dans le REPL:
def myMethod(functionLiteral: Boolean => Boolean):Unit = {}
myMethod({a:Boolean => true})
myMethod({a => true})
La seule chose révélatrice qui se passe ici est que le compilateur ne lance pas d'erreur.
L'auteur essaie-t-il de dire que l'argument de fonction a est supposé être un booléen par le compilateur?
Comment cela répond-il à la question concernant l'inférence? –
Ah vous avez raison. J'étais confus par le fait que c'était le code qui ne pouvait pas compiler, mettra à jour la réponse. –