j'ai essayé de mettre en œuvre une fonction similaire à:inférence automatique argument de type dans scala
def myMap[A,B](a: Seq[A], f: A => B): Seq[B] = a.map(f)
// then I want to call it like that:
myMap(List(1,13,42), _*2)
Mais l'appel à myMap
ne compile pas parce que le compilateur ne peut pas déduire les arguments de type A
et B
. Erreur: missing parameter type
Fondamentalement, j'espère qu'il déduirait A
(Int) argument donné List(1,13,42)
déduire ensuite B
de donnée f = _*2
sachant A
. Mais ce n'est pas le cas.
Que pourrais-je faire pour éviter d'écrire les arguments de type?
Le meilleur que j'ai trouvé:
def myMap[A,B](a: Seq[A], f: A => B): Seq[B] = a.map(f)
myMap(List(1,13,42), (a: Int) => a*2)
à savoir Je donne explicitement A
dans l'argument f
Je préfère finalement ma solution ci-dessous. Mais le vôtre répond mieux à la question –