4

我查看了 F# 数组模块,但似乎没有可以从数组中删除某个元素的函数。我只是想知道是否存在任何这样做的功能?

例如

remove 2 [| 0 ; 1 ; 2 ; 3 ; 4 |]
val it -> [| 0 ; 1 ; 3 ; 4 |]

更新

数组过滤器是我正在寻找的。除此之外,我的情况更具体一点。

如果我拥有的数组不是普通类型的数组,而是一个特定类引用的数组。假设我只想删除 who 的元素member.order = 2,那么谓词将如何?

4

1 回答 1

11

您可以使用 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))

另外让我指出,这两个函数都解决了一个稍微不同的愚蠢问题:从数组中删除所有满足条件的元素。从字面上看,您的问题可能被解读为仅删除第一次出现的元素。这样的阅读仍然让你有机会为你的家庭作业做出创造性贡献:)

于 2013-10-28T07:17:50.660 回答