当我看到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)
你能解释一下吗?
答案 0 :(得分:3)
Scaladocs是简化的,如果你想看到你必须扩展的完整签名并点击show full signature,你会发现真正的签名是这样的:
def map[B, That](f: ((A, B)) ⇒ B)(implicit bf: CanBuildFrom[Map[A, B], B, That]): That
允许返回That
,Map
可以是List
,也可以是{{1}}。
答案 1 :(得分:2)
简单的答案是你需要键值对来构建地图。
scala> Map("answer" -> 42).map { case(k, v) => (k, 43) }
res6: scala.collection.immutable.Map[String,Int] = Map(answer -> 43)