为什么没有List.skip和List.take?当然有 Seq.take 和 Seq.skip,但它们不会因此创建列表。
一种可能的解决方案是: mylist |> Seq.skip N |> Seq.toList
但这会创建第一个枚举器,然后从该枚举器创建一个新列表。我认为可能有更直接的方法从不可变列表创建不可变列表。由于内部没有元素的复制,因此只有从新列表到原始列表的引用。
其他可能的解决方案(不引发异常)是:
let rec listSkip n xs =
match (n, xs) with
| 0, _ -> xs
| _, [] -> []
| n, _::xs -> listSkip (n-1) xs
但这仍然没有回答问题......
顺便说一句,您可以将函数添加到列表模块:
module List =
let rec skip n xs =
match (n, xs) with
| 0, _ -> xs
| _, [] -> []
| n, _::xs -> skip (n-1) xs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)