列表中的收益字符串[Char]

时间:2011-05-28 15:19:58

标签: scala yield yield-return

我有一个l:列出[Char]的字符,我想连接并在一个for循环中作为String返回。

我试过这个

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

导致

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

那么如何更改yield的结果类型呢?

谢谢!

3 个答案:

答案 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