如何解释地图地图结果



当我看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)

你能解释一下吗?

Scaladocs 是简化的,如果你想看到完整的签名,你必须展开并单击显示完整签名,你会看到真正的签名是这样的:

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

这允许返回一个That,它可以是Map,也可以是List

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

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

最新更新