Выходная строка из списка [Char] - PullRequest
27 голосов
/ 28 мая 2011

У меня есть l: List [Char] символов, которые я хочу объединить и вернуть в виде строки в цикле for.

Я пробовал это

val x: String = for(i <- list) yield(i)

ведет к

 error: type mismatch;  
 found   : List[Char]  
 required: String

Так как я могу изменить тип результата доходности?

Спасибо!

Ответы [ 3 ]

68 голосов
/ 28 мая 2011

Попробуйте:

val x: String = list.mkString

Этот синтаксис:

for (i <- list) yield i

является синтаксическим сахаром для:

list.map(i => i)

и, таким образом, вернет неизмененную копию вашегооригинал list.

3 голосов
/ 29 мая 2011

Вы можете использовать следующее:

val x: String = (for(i <- list) yield(i))(collection.breakOut)

См. этот вопрос для получения дополнительной информации о breakOut.

1 голос
/ 12 марта 2015

Вы можете использовать любую из трех перегрузок mkString.По сути, он преобразует коллекцию в плоскую строку с помощью метода toString каждого элемента.Перегрузки добавляют пользовательские разделители между каждым элементом.

Это метод Iterable, поэтому вы также можете использовать его в Map или Set.

См. http://www.scala -lang.org / api/2.7.2/scala/Iterable.html для получения более подробной информации.

...