使用列表中的任何函数验证输入
Validate input with any function in a list
假设我想验证一个必须满足多个函数之一的输入。在 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
正如评论所说,您拥有的一切都可以正常工作。
不过,我会将其简化为:
let any x = funcs |> Seq.exists (fun f -> f x)
any 2 //true
any 3 //true
any 5 //true
any 7 //false
假设我想验证一个必须满足多个函数之一的输入。在 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
正如评论所说,您拥有的一切都可以正常工作。
不过,我会将其简化为:
let any x = funcs |> Seq.exists (fun f -> f x)
any 2 //true
any 3 //true
any 5 //true
any 7 //false