如何解释Map.map结果

时间:2014-09-28 21:16:53

标签: scala collections

当我看到Map.map scaladoc时,我可以看到

map[B](f: (A) ⇒ B): Map[B]

但是简单的以下代码不会返回Map

scala> Map("answer" -> 42).map { case(k, v) => v }
res40: scala.collection.immutable.Iterable[Int] = List(42)

你能解释一下吗?

2 个答案:

答案 0 :(得分:3)

Scaladocs是简化的,如果你想看到你必须扩展的完整签名并点击show full signature,你会发现真正的签名是这样的:

def map[B, That](f: ((A, B)) ⇒ B)(implicit bf: CanBuildFrom[Map[A, B], B, That]): That

允许返回ThatMap可以是List,也可以是{{1}}。

答案 1 :(得分:2)

简单的答案是你需要键值对来构建地图。

scala> Map("answer" -> 42).map { case(k, v) => (k, 43) }
res6: scala.collection.immutable.Map[String,Int] = Map(answer -> 43)