Scala: dołącz do iterowalnego ciągu

262

Jak „dołączyć” iterowalny ciąg znaków przez inny ciąg znaków w Scali?

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

Chcę, aby ten kod był generowany a,b,c(łącz elementy za pomocą „,”).

scala_newbie
źródło
1
@scala_newbie Myślę, że twoje pytanie zostało odrzucone, ponieważ niektórzy ludzie uważają, że nie ma wysiłku badawczego.
om-nom-nom
24
przeglądanie tego pytania to mój wysiłek badawczy
Walrus the Cat,

Odpowiedzi:

424

Co powiesz na mkString ?

theStrings.mkString(",")

Istnieje wariant, w którym możesz również określić prefiks i sufiks.

Zobacz tutaj implementację z użyciem foldLeft , która jest znacznie bardziej szczegółowa, ale być może warto spojrzeć ze względu na edukację.

Brian Agnew
źródło
Zauważ, że implementacja foldLeft zakłada niepustą listę
Frawr
5
Dzięki! W przypadku, gdy ktoś chce zawrzeć elementy ciągów w cudzysłowie, pomocny jest również mkString: theStrings.mkString ("'", "'," "," "")
Niko Gamulin
1
@Frawr Ta strona prowadzi do szeregu przykładów oldfashionedsoftware.com/2009/07/30/…, które obejmują implementację, która wykorzystuje dopasowanie wzorca dla pustej skrzynki listy (zero). Zmiana naśladująca mkString wyglądałaby następująco: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Davos,
2
Link langref.org nie działa
Floegipoky