在F#中,当调用的函数具有多个参数时,如何使用list.filter?

时间:2019-05-16 10:46:28

标签: f#

我正在尝试使用伪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);
}

我有2个问题:

  • 是否存在等效的List.filter,可以用来检查函数调用的结果是否为None?
  • 如果某些参数不是来自列表迭代器,如何通过列表调用函数?喜欢我的例子中的东西?

(从F#开始,答案可能很简单)

1 个答案:

答案 0 :(得分:4)

您可以使用List.choose

let myData a b c = ...

let collect somthing somethingElse myData =
    myData |> List.choose (myFunc something somethingElse)

如果list元素不是myFunc的最后一个元素,则不能使用部分应用程序,而可以使用函数,例如

myData |> List.choose (fun e -> myFunc something e somethingElse)