【发布时间】:2016-05-17 09:20:44
【问题描述】:
我正在尝试在 Scala 中掌握 flatMap 实现的窍门。基于Scala编程中的定义
函数返回一个元素列表作为其右参数。它将函数应用于每个列表并返回所有函数结果的串联。
现在要理解这一点,我有以下实现
val listwords = List(List("abc"),List("def"),List("ghi"))
val res2 = listwords flatMap (_+"1")
println(res2) //output- List(L, i, s, t, (, a, b, c, ), 1, L, i, s, t, (, d, e, f, ), 1, L, i, s, t, (, g, h, i, ), 1)
val res3 = listwords flatMap (_.apply(0).toCharArray())
println(res3) //output- List(a, b, c, d, e, f, g, h, i)
看到第一个让我发疯的输出,为什么List[List[String]] 被视为List[String]?
毕竟回答了上述问题,请有人帮我执行一个操作,该操作需要选择每个内部第一个字符串的第一个字符并产生List[Char]。所以给定listwords,我希望输出为List('a', 'd', 'g')。
【问题讨论】: