F# 如何获得一份清单?
我有一个类似F# 如何获得一份清单?,f#,F#,我有一个类似[1..12]的列表,我想得到一个类似[4..9]的列表。不知道我怎么能做到,我对F#是新手。我不知道是否有内置的方法,但我想知道手动方式。假设您使用类似Ocaml的F子集,您可能想使用标准模块,可能是它的过滤功能 否则,可以使用匹配的尾部递归函数 [1..12] |> List.filter (fun x -> x >= 4 && x <= 9) 列表不支持切片,但如果改用数组,也可以执行以下操作: [|1..12|].[3..8] (注
[1..12]
的列表,我想得到一个类似[4..9]
的列表。不知道我怎么能做到,我对F#是新手。我不知道是否有内置的方法,但我想知道手动方式。假设您使用类似Ocaml的F子集,您可能想使用标准模块,可能是它的过滤功能
否则,可以使用匹配的尾部递归函数
[1..12] |> List.filter (fun x -> x >= 4 && x <= 9)
列表不支持切片,但如果改用数组,也可以执行以下操作:
[|1..12|].[3..8]
(注意3..8而不是4..9,因为基于0的索引)立即回答您的问题:如何从列表中提取一部分?模式匹配
您可以使用模式匹配来编写从列表中提取范围的函数。基本算法是在Exs
让rec在f acc=函数时执行
|x::xs当f x->takeWhile f(x::acc)xs时
|->List.rev acc
xs
|>滑行时间((>)分钟)
|>takeWhile((>=)最大值)[]
[1..12]|>范围4 9
>val-it:int-list=[4;5;6;7;8;9]
[|1..12|].[3..8]