Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/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
F#如何从列表中获取某些值_F# - Fatal编程技术网

F#如何从列表中获取某些值

F#如何从列表中获取某些值,f#,F#,我有一个选项列表,例如[Some 1;Some 2]。我的目标是在不使用模式匹配和options.get函数的情况下获取某些元素的值 我有一个testfunction,它返回('a->'b)option->'a option->'b option。 为了实现我的目标,我如何使用此功能 let test xa xb = match xa with | None -> None | Some el -> Option.map el xa 您可以使用列表获取某些元素的值。选

我有一个选项列表,例如[Some 1;Some 2]。我的目标是在不使用模式匹配和options.get函数的情况下获取某些元素的值

我有一个testfunction,它返回('a->'b)option->'a option->'b option。 为了实现我的目标,我如何使用此功能

let test xa xb = 
  match xa with
  | None -> None
  | Some el -> Option.map el xa

您可以使用
列表获取
某些
元素的值。选择
函数,它几乎完全可以做到这一点

[Some 1; Some 2] |> List.choose id
// Returns [1; 2]
List.choose
函数的语义是,它允许您通过提供一个函数来选择列表中的某些元素,该函数为每个元素返回
some
None
。函数为其返回
None
的元素将被丢弃,而
某些结果将被展开并作为列表返回。您可以将此函数视为一体的
map
filter
的组合


因为列表中的元素已经是
选项
类型,所以您选择的函数应该是
id
,这是一个标准的库函数,只需返回其参数不变即可。

可能的重复项我可以用list实现它。foldback?@BDermier您可以用fold实现任何功能。但是折叠函数需要包含模式匹配,OP出于某种原因不想这样做。