Scala: присоединение к повторяющимся строкам

262

Как «соединить» итерируемую строку другой строкой в ​​Scala?

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

Я хочу, чтобы этот код выводил a,b,c(соединяйте элементы с помощью ",").

scala_newbie
источник
1
@scala_newbie Я думаю, что ваш вопрос был отклонен, потому что некоторые люди считают, что ему не хватает исследовательских усилий.
om-nom-nom
24
поиск в этом вопросе - моя исследовательская работа
Кошка Морж

Ответы:

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