gpt4 book ai didi

f# - 该代码如何工作

转载 作者:行者123 更新时间:2023-12-03 21:33:59 25 4
gpt4 key购买 nike

我刚刚面对以下代码。

let rec Make_Segment list=
match list with
| [] ->[],[]
| hd::tail when hd<=tail.Head -> let current,rest=Make_Segment tail
hd::current,rest
| hd::tail when hd>tail.Head -> [hd], tail

let segments= [3;4;5;5;1;2;3]

Make_Segment segments


这是一个递归函数,始终返回两个列表。
但是正如您所看到的,它总是在其匹配项中使用一个参数,即 list
那么第一个论点在哪里?

如何运作?

最佳答案

match语句中,list参数通过语法hd::tail分为两个值。这将匹配任何不为空的列表(这就是为什么必须与空列表进行匹配的原因),并且列表的第一项将被赋予名称hd,而列表的其余部分将被赋予名称 。 (如果原始 tail仅包含一项,则 list现在将为空列表)。

然后,当进行递归调用时,它将返回两个列表的元组,这些列表将通过 tail分配进行分解。第一个列表分配给 let current,rest=Make_Segment tail,第二个列表分配给 current

关于f# - 该代码如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32901997/

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