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 ",").


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.