gpt4 book ai didi

Scala:带元组的 flatMap

转载 作者:行者123 更新时间:2023-12-03 19:54:06 26 4
gpt4 key购买 nike

为什么以下声明对 .map() 有效但不适用于 .flatMap() ?

 val tupled = input.map(x => (x*2, x*3))

//Compilation error: cannot resolve reference flatMap with such signature
val tupled = input.flatMap(x => (x*2, x*3))

不过这个说法没有问题:
val tupled = input.flatMap(x => List(x*2, x*3))

最佳答案

假设 input如果类型为 List[Int] , mapInt 获取函数至 A , 而 flatMapInt 获取函数至 List[A] .

根据您的用例,您可以选择其中之一,但它们绝对不可互换。

例如,如果您只是转换 List 的元素您通常希望使用 map :

List(1, 2, 3).map(x => x * 2) // List(2, 4, 6)

但你想改变 List 的结构并且——例如——将每个元素“分解”到另一个列表中,然后将它们展平, flatMap是你的 friend :
List(1, 2, 3).flatMap(x => List.fill(x)(x)) // List(1, 2, 2, 3, 3, 3)

使用 map你本来会有 List(List(1), List(2, 2), List(3, 3, 3))反而。

关于Scala:带元组的 flatMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924480/

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