как использовать list.filter, когда вызываемая функция имеет несколько параметров, в F #? - PullRequest
2 голосов
/ 16 мая 2019

Я пытаюсь сделать следующее в F # из псевдо-кода C #:

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 Ответ

4 голосов
/ 16 мая 2019

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...