【问题标题】:Yield String from List[Char]从 List[Char] 中生成字符串
【发布时间】:2011-09-03 23:41:20
【问题描述】:

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

我试过了

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

导致

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

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

谢谢!

【问题讨论】:

  • 您是否有理由为此需要使用 for 理解?

标签: scala yield yield-return


【解决方案1】:

试试这个:

val x: String = list.mkString

这个语法:

for (i <- list) yield i

是语法糖:

list.map(i => i)

因此将返回原始list 的未更改副本。

【讨论】:

  • @soc:scalaz 确实可以做到这一点:(List("a", "b", "c") ∑) assert_≟ "abc"。
【解决方案2】:

您可以使用以下内容:

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

有关 breakOut 的更多信息,请参阅 this question。

【讨论】:

    【解决方案3】:

    您可以使用三个 mkString 重载中的任何一个。基本上,它通过每个元素的 toString 方法将集合转换为平面字符串。重载在每个元素之间添加自定义分隔符。

    它是一个Iterable的方法,所以你也可以在Map或Set中使用它。

    更多详情请见http://www.scala-lang.org/api/2.7.2/scala/Iterable.html。

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2010-09-16
      • 1970-01-01
      • 2016-02-22
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 2014-01-15
      相关资源
      最近更新 更多