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