F# 搜索具有多个 values/inputs 的记录
F# Search through records with multiple values/inputs
抱歉,如果这看起来像是一个愚蠢的问题,我仍在努力弄清楚 F# 是如何做的
所以,假设我建立了以下记录:
type person =
{ fName: string;
lName: string;
age: int;
weight: int; }
然后我创建一些人来填充记录
let joe = {fName = "JOE"; lName = "QUAIL"; age = 34; weight = 133}
let jason = {fName = "JASON"; lName = "QUAIL"; age = 34; weight = 166}
let jerry = {fName = "JERRY"; lName = "PAIL"; age = 26; weight = 199}
所以我想做的是至少使用两个或三个参数(比如 age
和 lName
),我想搜索 person
记录中的所有满足 age
和 lName
输入参数的人,目标是将他们添加到列表中。所以在这个例子中,我想搜索姓氏 "QUAIL" 和年龄 34 的记录,这会得到 Joe 和 Jason
在 F# 中,我认为模式匹配是可行的方法,但我不知道如何实现该模式匹配结构。
我的想法是使用这样的结构:
let myPeeps =
List.filter (function
| {age = ageImSearchingFor} & {lName = nameImSearchingFor} -> // add that person to a list or something
| _ -> // do nothing
)
但我不知道如何在 F# 中正确完成。
所以问题是,如何使用模式匹配(或其他方式)使用多个搜索参数搜索填充的记录?
为此您根本不需要模式匹配。 List.filter 只需要你 return 一个 bool,所以你可以这样做:
List.filter (fun p -> p.age = 34 && p.lName = "QUAIL") myPeeps
这将 return
[joe; jason]
您可以定义一个函数,该函数接受一个人,并且当 any/all 满足特定人的条件时 return 为真,以便根据您的特定需求自定义过滤器功能。
抱歉,如果这看起来像是一个愚蠢的问题,我仍在努力弄清楚 F# 是如何做的
所以,假设我建立了以下记录:
type person =
{ fName: string;
lName: string;
age: int;
weight: int; }
然后我创建一些人来填充记录
let joe = {fName = "JOE"; lName = "QUAIL"; age = 34; weight = 133}
let jason = {fName = "JASON"; lName = "QUAIL"; age = 34; weight = 166}
let jerry = {fName = "JERRY"; lName = "PAIL"; age = 26; weight = 199}
所以我想做的是至少使用两个或三个参数(比如 age
和 lName
),我想搜索 person
记录中的所有满足 age
和 lName
输入参数的人,目标是将他们添加到列表中。所以在这个例子中,我想搜索姓氏 "QUAIL" 和年龄 34 的记录,这会得到 Joe 和 Jason
在 F# 中,我认为模式匹配是可行的方法,但我不知道如何实现该模式匹配结构。
我的想法是使用这样的结构:
let myPeeps =
List.filter (function
| {age = ageImSearchingFor} & {lName = nameImSearchingFor} -> // add that person to a list or something
| _ -> // do nothing
)
但我不知道如何在 F# 中正确完成。
所以问题是,如何使用模式匹配(或其他方式)使用多个搜索参数搜索填充的记录?
为此您根本不需要模式匹配。 List.filter 只需要你 return 一个 bool,所以你可以这样做:
List.filter (fun p -> p.age = 34 && p.lName = "QUAIL") myPeeps
这将 return
[joe; jason]
您可以定义一个函数,该函数接受一个人,并且当 any/all 满足特定人的条件时 return 为真,以便根据您的特定需求自定义过滤器功能。