Scala: приєднайтеся до ітерабельного рядка


262

Як мені "приєднати" ітерабельний рядок до іншого рядка в Scala?

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

Я хочу, щоб цей код a,b,cвийшов (об'єднайте елементи за допомогою ",").


1
@scala_newbie Я думаю, що ваше питання було відхилено, тому що деякі люди думають, що йому не вистачає наукових зусиль.
om-nom-nom

24
googling це питання є моїми дослідницькими зусиллями
Морж Кіт

Відповіді:


424

Як щодо mkString ?

theStrings.mkString(",")

Існує варіант, в якому ви також можете вказати префікс і суфікс.

Дивіться тут про реалізацію за допомогою foldLeft , який набагато більш багатослівний, але, можливо, варто звернути увагу на освіту.


Зауважте, що реалізація foldLeft передбачає не порожній список
Frawr

5
Дякую! У випадку, якщо хтось хоче вкладати рядкові елементи в лапки, також допоможе mkString: theStrings.mkString ("'", "', '", "'")
Ніко Гамулін

1
@Frawr Ця сторінка посилається на купу прикладів oldfashionedsoftware.com/2009/07/30/…, що включає в себе реалізацію, яка використовує відповідність шаблону для випадку порожнього списку (Nil). Змінити його на імітацію mkString було б так: def mkFoldLeftString[A](list:List[String], delim:String = ","): String = list match { case head :: tail => tail.foldLeft(head)(_ + delim + _) case Nil => "" }
Давос

2
Посилання langref.org померло
Floegipoky
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.