我查看了F#数组模块,但似乎没有可以从数组中删除某个元素的函数。我只是想知道是否存在任何功能呢?
E.g。
remove 2 [| 0 ; 1 ; 2 ; 3 ; 4 |]
val it -> [| 0 ; 1 ; 3 ; 4 |]
更新
阵列过滤器是我正在寻找的。除此之外,我的情况稍微具体一点。
如果我拥有的数组不是普通类型数组,而是一个特定类引用的数组。假设我只想删除member.order = 2
的元素,那么谓词将如何?
答案 0 :(得分:10)
您可以使用F#Array
模块函数Array.filter实现此目的,如下所示:
> [| 0 ; 1 ; 2 ; 3 ; 4 |] |> Array.filter ((<>)2);;
val it : int [] = [|0; 1; 3; 4|]
更新:要弄清楚应该是什么样的lambda并不难。为了减少它的沉闷,你可以用另一个函数Array.choose获得相同的结果:
Array.choose (fun x -> if x.order = 2 then None else Some(x))
另外,我要指出,这两个函数都解决了一个稍微不同的 dumb 问题:从满足条件的数组所有元素中删除。从字面上看,您的问题可能被理解为只删除元素的第一次。这样的阅读仍然让您有机会创意为您的作业做出贡献:)