首页 > 解决方案 > 当调用的函数有多个参数时,如何在 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);
}

我有两个问题:

(从 F# 开始,答案可能微不足道)

标签: 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)

推荐阅读