gpt4 book ai didi

scala - 如何简洁地映射 map 到 map

转载 作者:行者123 更新时间:2023-12-02 20:49:11 24 4
gpt4 key购买 nike

“ map map 到 map ”,真是拗口。

无论如何,我能做到:

val list = List(1, 2, 3)
val list2 = list map (item => item + 1)
println(list2)
// List(2, 3, 4)

为什么以下不起作用?:

val ages = Map("alice" -> 21, "bob" -> 22)
val ages2 = ages map ((name, age) => (name, age + 1))

,我该如何让它发挥作用?

编辑:我发现我必须这样做:

val ages2 = ages map {case (name, age) => (name, age + 1)}

,但这并不能回答我的第一个问题,这就是为什么我天真的第一种方法不起作用。

最佳答案

它不起作用,因为 Scala 编译器不会自动分解 Map 中的 Tuple2(键值对的类型)。

这会起作用:

val ages2 = ages.map(pair => (pair._1, pair._2 + 1))

因为它使用元组参数作为一个整体。

正如您所注意到的,使用部分函数语法也可以工作,并允许您自动分解元组:

val ages2 = ages map { case (name, age) => (name, age + 1) }

这是当前编译器的一个限制。对于 dotty(新的 Scala 编译器),这将是开箱即用的。

关于scala - 如何简洁地映射 map 到 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42927484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com