f# - 当调用的函数有多个参数时,如何在 F# 中使用 list.filter?
问题描述
我正在尝试从伪 C# 代码在 F# 中执行以下操作:
Data? MyFunc(a, b, c) { ... }
var result = new List<Data>();
foreach (var i in MyData)
{
var r = MyFunc(something, somethingelse, i);
if (r != null) result.add((Data)r);
}
我有两个问题:
- 是否有等效的 List.filter 可以检查我的函数调用的结果是否为 None ?
- 如果某些参数不是来自列表迭代器,如何通过列表调用函数?像我的例子中的东西和其他东西?
(从 F# 开始,答案可能微不足道)
解决方案
您可以使用List.choose
:
let myData a b c = ...
let collect somthing somethingElse myData =
myData |> List.choose (myFunc something somethingElse)
如果列表元素不是最后一个元素,myFunc
则不能使用部分应用程序,但可以使用函数,例如
myData |> List.choose (fun e -> myFunc something e somethingElse)
推荐阅读
- delphi - Delphi VCL 样式问题与 TListview EditCaption 和 HideSelection
- java - 以编程方式配置通过 CXF 启动的码头
- visual-studio-2013 - WiX 工具集是否与 Windows 10 兼容
- python - 如何在 pandas/sql 中按分层数据分组?
- android - 将回收站视图数据中的 onMove() 更改更新到房间数据库
- javascript - 使用相对路径时 currentTime 出现问题
- php - 已设置 date.timezone,为什么 PHP 仍显示 UTC 时间?
- caching - 缓存不会在刷新时保留
- identity - 如何使用 Asp net core 在 Clean Architecture 中实现 Asp Identity
- php - 如何修复“无法重新初始化数据表”