Ответ 1
Попробуйте следующее:
val x: String = list.mkString
Этот синтаксис:
for (i <- list) yield i
- синтаксический сахар для:
list.map(i => i)
и, таким образом, вернет неизмененную копию исходного list
.
У меня есть l: List [ Char] символов, которые я хочу конкатрировать и возвращать как String в одном для цикла.
Я пробовал это
val x: String = for(i <- list) yield(i)
приводящий к
error: type mismatch;
found : List[Char]
required: String
Итак, как я могу изменить тип результата результата?
Спасибо!
Попробуйте следующее:
val x: String = list.mkString
Этот синтаксис:
for (i <- list) yield i
- синтаксический сахар для:
list.map(i => i)
и, таким образом, вернет неизмененную копию исходного list
.
Вы можете использовать следующее:
val x: String = (for(i <- list) yield(i))(collection.breakOut)
См. этот вопрос для получения дополнительной информации о breakOut.
Вы можете использовать любую из трех перегрузок mkString. В основном он преобразует коллекцию в плоскую строку для каждого метода toString. Перегрузки добавляют пользовательские разделители между каждым элементом.
Это метод Iterable, поэтому вы также можете использовать его в Map или Set.
Подробнее см. http://www.scala-lang.org/api/2.7.2/scala/Iterable.html.