Scala: únete a un iterable de cadenas

262

¿Cómo "unir" un iterable de cadenas por otra cadena en Scala?

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

Quiero que salga este código a,b,c(unir los elementos con ",").

scala_newbie
fuente
1
@scala_newbie Creo que su pregunta fue rechazada, porque algunas personas piensan que carece de esfuerzo de investigación.
om-nom-nom
24
Googlear esta pregunta es mi esfuerzo de investigación
Walrus the Cat

Respuestas:

424

¿Qué tal mkString ?

theStrings.mkString(",")

Existe una variante en la que también puede especificar un prefijo y sufijo.

Vea aquí una implementación usando foldLeft , que es mucho más detallado, pero que quizás valga la pena mirar por el bien de la educación.

Brian Agnew
fuente
Tenga en cuenta que la implementación de foldLeft supone una lista no vacía
Frawr
55
¡Gracias! En caso de que alguien quiera encerrar elementos de cadena entre comillas, mkString también es útil: theStrings.mkString ("'", "', '", "'")
Niko Gamulin
1
@Frawr Esa página enlaza con un montón de ejemplos oldfashionedsoftware.com/2009/07/30/… que incluye una implementación que utiliza la coincidencia de patrones para el caso de la lista vacía (Cero). Modificarlo para imitar mkString sería así: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos
2
El enlace langref.org está muerto
Floegipoky