Scala: rejoignez un itérable de chaînes

262

Comment "joindre" un itérable de chaînes par une autre chaîne dans Scala?

val thestrings = Array("a","b","c")
val joined = ???
println(joined)

Je veux que ce code sorte a,b,c(joindre les éléments par ",").

scala_newbie
la source
1
@scala_newbie Je pense que votre question a été rejetée, car certaines personnes pensent qu'elle manque d'effort de recherche.
om-nom-nom du
24
googler cette question est mon effort de recherche
Walrus the Cat

Réponses:

424

Que diriez-vous de mkString ?

theStrings.mkString(",")

Il existe une variante dans laquelle vous pouvez également spécifier un préfixe et un suffixe.

Voir ici pour une implémentation utilisant foldLeft , qui est beaucoup plus verbeux, mais qui mérite peut-être d'être étudié pour le bien de l'éducation.

Brian Agnew
la source
Notez que l'implémentation de foldLeft suppose une liste non vide
Frawr
5
Merci! Dans le cas où quelqu'un souhaite mettre des éléments de chaîne entre guillemets, mkString est également utile: theStrings.mkString ("'", "', '", "'")
Niko Gamulin
1
@Frawr Cette page est liée à un tas d'exemples oldfashionedsoftware.com/2009/07/30/… qui inclut une implémentation qui utilise la correspondance de modèle pour le cas de liste vide (Nil). Le modifier pour imiter mkString serait comme ceci: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos
2
Le lien langref.org est mort
Floegipoky