Подтвердите ввод любой функцией в списке - PullRequest
0 голосов
/ 18 октября 2018

Скажем, я хочу проверить ввод, который должен удовлетворять одной из ряда функций.Каков наилучший способ сделать это в F #?Вот небольшой пример, который я придумал.

let funcs = 
            [
                fun x -> x % 2 = 0
                fun x -> x % 3 = 0
                fun x -> x % 5 = 0
            ]

let oneWorks x = funcs |> List.tryFind (fun f -> f x = true) |> Option.isSome

oneWorks 2 //true
oneWorks 3 //true
oneWorks 5 //true
oneWorks 7 //false

1 Ответ

0 голосов
/ 18 октября 2018

Как говорится в комментариях, то, что у вас будет, будет работать нормально.

Однако я бы упростил это до:

let any x = funcs |> Seq.exists (fun f -> f x)

any 2 //true
any 3 //true
any 5 //true
any 7 //false
...