4

F# 配列モジュールを調べましたが、配列から特定の要素を削除できる関数がないようです。そうする機能が存在するかどうか疑問に思っていましたか?

例えば

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

アップデート

配列フィルターは私が探しているものです。それに加えて、私の場合はもう少し具体的です。

私が持っている配列が通常の型の配列ではなく、特定のクラスの参照の配列である場合。要素 which のみを削除すると仮定すると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|]

更新:ラムダがどうあるべきかを理解するのは難しくありません。少し退屈にならないようにするために、別の単一関数Array.chooseで同じ結果を得ることができます:

Array.choose (fun x -> if x.order = 2 then None else Some(x))

また、両方の関数が少し異なる愚かな質問に対処していることを指摘させてください。配列から条件を満たすすべての要素を削除します。文字通り、あなたの質問は、要素の最初の出現のみを削除するものとして読まれるかもしれません。そのような読書は、宿題に創造的な貢献をするチャンスを与えてくれます:)

于 2013-10-28T07:17:50.660 に答える