我有一个l:列出[Char]的字符,我想连接并在一个for循环中作为String返回。
我试过这个
val x: String = for(i <- list) yield(i)
导致
error: type mismatch;
found : List[Char]
required: String
那么如何更改yield的结果类型呢?
谢谢!
答案 0 :(得分:68)
试试这个:
val x: String = list.mkString
此语法:
for (i <- list) yield i
是语法糖:
list.map(i => i)
因此会返回原始list
的未更改副本。
答案 1 :(得分:3)
您可以使用以下内容:
val x: String = (for(i <- list) yield(i))(collection.breakOut)
有关breakOut的详细信息,请参阅this question。
答案 2 :(得分:1)
您可以使用三个mkString重载中的任何一个。基本上它通过每个元素的toString方法将集合转换为扁平String。重载在每个元素之间添加自定义分隔符。
这是一个Iterable的方法,所以你也可以在Map或Set中使用它。
有关详细信息,请参阅http://www.scala-lang.org/api/2.7.2/scala/Iterable.html。