Voici le code POC:ne peut pas comprendre les erreurs de type à Scala
object TypeTest extends Application {
val stuff = List(1,2,3,4,5)
def joined:String = stuff.reduceLeft(_ + ", " + _)
println(joined)
}
Lors de la compilation, il donne l'erreur suivante:
tt.scala:4: error: type mismatch;
found : java.lang.String
required: Int
def joined:String = stuff.reduceLeft(_ + ", " + _)
^
tt.scala:4: error: type mismatch;
found : Int
required: String
def joined:String = stuff.reduceLeft(_ + ", " + _)
^
Ecriture de la fonction rejoint comme
reduceLeft(_.toString + ", " + _.toString)
ne aide pas, donne toujours la même erreur. Cependant, si je l'écris comme
def joined:String = stuff.map(_.toString).reduceLeft(_ + ", " + _)
tout va bien. Est-ce que quelqu'un peut expliquer cette étrange combinaison d'erreurs de type? Qu'est-ce qui se passe vraiment ici? Le second est particulièrement bizarre, car il y a une conversion implicite pour Int en String.
Ah, ouais, tu as raison. Je l'ai en quelque sorte confondu avec le pli * –