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


262

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

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

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


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.