【发布时间】:2015-06-17 04:02:18
【问题描述】:
documentation on Map.flatten 声明如下:
将此可遍历集合的映射转换为由这些可遍历集合的元素形成的映射。
我得到“可遍历集合的地图”。例如,这将是一个列表映射。仅根据该定义,Map[Int, List[Int]] 就符合条件。
但什么是“由这些可遍历集合的元素组成的地图”?这听起来很简单,但我很难让它发挥作用。
文档中提供的示例代码是......好吧......我们应该说,不适用吗?
val xs = List( Set(1, 2, 3), Set(1, 2, 3) ).flatten // xs == List(1, 2, 3, 1, 2, 3) val ys = Set( List(1, 2, 3), List(3, 2, 1) ).flatten // ys == Set(1, 2, 3)
我尝试了一些不同的方法,但它们产生了相同的错误。以下是几个例子:
scala> val m = Map(List(1) -> List(1,2,3), List(2) -> List(4,5,6), List(3) -> List(7,8,9))
m: scala.collection.immutable.Map[List[Int],List[Int]] = Map(List(1) -> List(1, 2, 3), List(2) -> List(4, 5, 6), List(3) -> List(7, 8, 9))
scala> m.flatten
<console>:9: error: No implicit view available from (List[Int], List[Int]) => scala.collection.GenTraversableOnce[B].
m.flatten
^
scala> val m = Map(1 -> List(1,2,3), 2 -> List(4,5,6), 4 -> List(7,8,9))
m: scala.collection.immutable.Map[Int,List[Int]] = Map(1 -> List(1, 2, 3), 2 -> List(4, 5, 6), 4 -> List(7, 8, 9))
scala> m.flatten
<console>:9: error: No implicit view available from (Int, List[Int]) => scala.collection.GenTraversableOnce[B].
m.flatten
^
我错过了什么?
【问题讨论】:
标签: scala dictionary flatten