collections - list.map 和 list.collect 的区别

标签 collections f#

map 和 collect 和有什么不一样?下面的文档-我说不出区别..

List.map<'T,'U> 函数

创建一个新集合,其元素是将给定函数应用于集合的每个元素的结果。

//签名:
List.map : ('T -> 'U) -> 'T 列表 -> 'U 列表

List.collect<'T,'U> 函数

对于列表的每个元素,应用给定的函数。连接所有结果并返回组合列表。

最佳答案

不同之处在于 map 的输出列表与输入列表的长度相同。对于 collect ,输出列表可能比输入更长或更短,因为您传递的函数返回一个列表而不是单个元素。

有关更多详细信息 - 比较签名。对于 map

List.map : ('T -> 'U) -> 'T list -> 'U list

并收集
List.collect : ('T -> 'U list) -> 'T list -> 'U list

你可以在这里看到函数参数的返回类型是不同的。

关于collections - list.map 和 list.collect 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18801054/

相关文章:

java - 将 HashMap 键迭代器转换为 AbstractIterator

字典列表的 Python 集合计数器

objective-c - 在删除某个对象之前,我应该检查它是否存在于集合中吗?

F# 递归类型 : method vs function type inference differences

dll - 在 F# 中是否使用空括号表示没有参数?

interface - 测量单位、接口(interface)和 Mixin

java - 如何交错列表

asp.net-mvc - 我可以在不加载整个集合的情况下删除单个子实体吗?

F# 显式成员约束 : The type variable ^T could not be generalized because it would escape its scope

f# - 从 Suave 请求中聚合信息