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ą „,”).


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ę.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.