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


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.