【发布时间】:2013-11-26 11:13:26
【问题描述】:
我以为Scala construct map(f).flatten was equivalent to flatMap(f)。但在这个例子中,情况并非如此。我想知道案例类在其中的作用是什么。如果我使用整数,两者都是等价的。但就我而言,我不能。
case class CTest(v: Int)
val s = Set(Map(CTest(0) -> List(0, 3), CTest(1) -> List(0, 2)))
val possibilities = s flatMap { m =>
val mapping = m flatMap {
case (label, destNodes) => destNodes map {
case nodes => (label, nodes) }
}
mapping
}
possibilities
产量
Set((CTest(0),3), (CTest(1), 2))
而
case class CTest(v: Int)
val s = Set(Map(CTest(0) -> List(0, 3), CTest(1) -> List(0, 2)))
val possibilities = s flatMap { m =>
val mapping = m map {
case (label, destNodes) => destNodes map {
case nodes => (label, nodes) }
}
mapping.flatten
}
possibilities
产量
Set((CTest(0),0), (CTest(0),3), (CTest(1),0), (CTest(1),2))
知道为什么吗?
【问题讨论】:
标签: scala dictionary case-class