gpt4 book ai didi

list - 我想在 "then"语句中的 "if.. then.. else"语句之后做两件事

转载 作者:行者123 更新时间:2023-12-04 17:27:59 24 4
gpt4 key购买 nike

let rec filtersList2fromList1 (List1:string list) (List2:string list) : string list =  
let finalList = [] in
match List1 with
| s :: tl -> if List.mem s List2 = true
then finalList @ [s] else filtersList2fromList1 tl List2
| [] -> []

以便,
filtersList2fromList1 ["x";"y";"z"] ["z";"x"] would be ["x";"z"]  
filtersList2fromList1 ["x";"y";"z"] ["x"] would be ["x"]

我想补充的是,如果“if”语句为真,它不仅会执行“finalList @ [s]”,还会执行“filtersList2fromList1 tl List2”,这样它将是一个递归。为真时不执行“filtersList2fromList1 tl List2”,
filtersList2fromList1 ["x";"y";"z"] ["z";"x"]只会是 ["x"] ,这是错误的。

我应该如何解决这个问题?

非常感谢你

最佳答案

要回答您的具体问题,您可以使用分号或 let...in构造。在你的情况下,两者都不会做你想做的事。

您应该阅读标准库上的文档,如 List模块包含您需要做的所有事情:

let filterList2fromList1 list1 list2 =
List.filter (fun x -> List.mem x list2) list1

关于list - 我想在 "then"语句中的 "if.. then.. else"语句之后做两件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4695930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com