Scala: junte-se a uma iterável de strings

262

Como eu "uno" uma iterável de strings por outra string no Scala?

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

Quero que esse código seja gerado a,b,c(junte os elementos por ",").

scala_newbie
fonte
1
@scala_newbie Acho que sua pergunta foi rebaixada, porque algumas pessoas pensam que falta um esforço de pesquisa.
Om-nom-nom
24
pesquisando essa questão é meu esforço de pesquisa
Walrus o gato

Respostas:

424

E o mkString ?

theStrings.mkString(",")

Existe uma variante na qual você também pode especificar um prefixo e sufixo.

Veja aqui uma implementação usando foldLeft , que é muito mais detalhada, mas talvez valha a pena olhar em prol da educação.

Brian Agnew
fonte
Observe que a implementação foldLeft assume uma lista não vazia
Frawr 24/10/2015
5
Obrigado! No caso de alguém quiser incluir elementos string entre aspas, mkString também é útil: theStrings.mkString ( " '", " ''", "')
Niko Gamulin
1
@Frawr Essa página contém links para vários exemplos oldfashionedsoftware.com/2009/07/30/…, que inclui uma implementação que usa correspondência de padrões para o caso da lista vazia (Nil). Modificá-lo para mkString imitar seria assim: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos
2
O link langref.org está morto
Floegipoky