web-dev-qa-db-fra.com

Scala tiret bas - ERREUR: type de paramètre manquant pour la fonction étendue

Je sais qu'il y a eu pas mal de questions à ce sujet, mais j'ai créé un exemple simple qui, selon moi, devrait fonctionner, mais ne fonctionne toujours pas et je ne suis pas sûr de comprendre pourquoi

val myStrings = new Array[String](3)
// do some string initialization

// this works
myStrings.foreach(println(_))


// ERROR: missing parameter type for expanded function
myStrings.foreach(println(_.toString))

Quelqu'un peut-il expliquer pourquoi la deuxième déclaration ne se compile pas?

80
Jeff Storey

Il s'étend à:

myStrings.foreach(println(x => x.toString))

Tu veux:

myStrings.foreach(x => println(x.toString))

La syntaxe d'espace réservé pour les fonctions anonymes remplace la plus petite expression contenant possible par une fonction.

105
retronym