J'ai un l: List [Char] de caractères que je veux concaténer et retourner sous forme de chaîne en une boucle.
J'ai essayé
val x: String = for(i <- list) yield(i)
menant à
error: type mismatch;
found : List[Char]
required: String
Alors, comment puis-je changer le type de rendement du résultat?
Merci!
Essaye ça:
val x: String = list.mkString
Cette syntaxe:
for (i <- list) yield i
est du sucre syntaxique pour:
list.map(i => i)
et renverra ainsi une copie inchangée de votre list
d'origine.
Vous pouvez utiliser les éléments suivants:
val x: String = (for(i <- list) yield(i))(collection.breakOut)
Voir cette question pour plus d'informations sur breakOut.
Vous pouvez utiliser l'une des trois surcharges mkString. Fondamentalement, il convertit une collection en une chaîne plate par la méthode toString de chaque élément. Les surcharges ajoutent des séparateurs personnalisés entre chaque élément.
C'est la méthode d'un Iterable, vous pouvez donc également l'utiliser dans Map ou Set.
Voir http://www.scala-lang.org/api/2.7.2/scala/Iterable.html pour plus de détails.