2013-10-28 32 views
4

我查看了F#數組模塊,但它好像沒有可以從數組中刪除某個元素的函數。我只是想知道是否存在這樣的功能?F#刪除數組中的某個元素

E.g.

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

UPDATE

濾鏡陣列就是我要找的。除此之外,我的情況只是更具體一些。如果我擁有的數組不是普通類型數組,而是特定類的引用數組。假設我只想移除其元素member.order = 2,那麼謂詞將如何?

+1

因爲你看起來在做這個課程:http://undergraduate.csse.uwa.edu.au/units/CITS3242/有沒有你還沒有問你的講師嗎? –

+0

因爲這些都是愚蠢的問題,我傾向於經常問這些問題 - 無論如何都爲他節省了有趣的問題。你怎麼知道? – user2431438

+1

你的問題看起來像可疑的家庭作業,並沒有那麼多的F#課程。另外,你應該能夠弄清楚你自己的lambda。 –

回答

10

你可以做到這一點使用F#Array模塊功能Array.filter,如下圖所示:

> [| 0 ; 1 ; 2 ; 3 ; 4 |] |> Array.filter ((<>)2);; 
val it : int [] = [|0; 1; 3; 4|] 

UPDATE:這是不是很難搞清楚什麼都要拉姆達。爲了使它少了幾分沉悶,你可以得到相同的結果與其他單一功能Array.choose

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

也讓我指出,這兩種功能解決一個稍微不同的問題:從陣列全部刪除滿足條件的元素。從字面上看,您的問題可能被解讀爲僅刪除第一個元素的發生。這樣的閱讀仍然給你一個機會有創造力貢獻你的功課:)

+0

太好了。你介意看我的更新,對我的情況更具體一點嗎? – user2431438

+0

@ user2431438'Array.filter(fun x - > x.order <> 2)' –