Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Collections list.map和list.collect之间的差异_Collections_F# - Fatal编程技术网

Collections list.map和list.collect之间的差异

Collections list.map和list.collect之间的差异,collections,f#,Collections,F#,地图和收集有什么区别?下面的文档-我看不出有什么区别 List.map函数 创建一个新集合,其元素是将给定函数应用于集合的每个元素的结果 //签名: List.map:('T->'U)->'T List->'U List List.collect函数 对于列表的每个元素,应用给定的函数。连接所有结果并返回组合列表。不同之处在于map的输出列表与输入列表的长度相同。对于collect,由于传递的函数返回的是列表而不是单个元素,因此输出列表可能比输入列表长或短 有关更多详细信息,请比较签名。对于

地图和收集有什么区别?下面的文档-我看不出有什么区别


List.map函数

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

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


List.collect函数


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

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

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

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

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

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

除了@John的答案之外,不同之处在于单词
连接


基本上,
List.collect f xs
List.concat(List.map f xs)
示例相同

假设您有一个列表:

let list=[[1;2];[3;4];[5;6]]

和一个转换函数:

let trans=fun x->[对于x中的i->i*10]


List.map trans List
将生成:

[[10;20];[30;40];[50;60]]

List.collect trans List
将生成:

[10;20;30;40;50;60]



List.collect
将应用转换函数,并将
连接
结果,而
List.map
将仅应用转换函数

List.collect
也称为
flatMap
(在其他语言中)。裁判