我查看了F#數組模塊,但它好像沒有可以從數組中刪除某個元素的函數。我只是想知道是否存在這樣的功能?F#刪除數組中的某個元素
E.g.
remove 2 [| 0 ; 1 ; 2 ; 3 ; 4 |]
val it -> [| 0 ; 1 ; 3 ; 4 |]
UPDATE
濾鏡陣列就是我要找的。除此之外,我的情況只是更具體一些。如果我擁有的數組不是普通類型數組,而是特定類的引用數組。假設我只想移除其元素member.order = 2
,那麼謂詞將如何?
我查看了F#數組模塊,但它好像沒有可以從數組中刪除某個元素的函數。我只是想知道是否存在這樣的功能?F#刪除數組中的某個元素
E.g.
remove 2 [| 0 ; 1 ; 2 ; 3 ; 4 |]
val it -> [| 0 ; 1 ; 3 ; 4 |]
UPDATE
濾鏡陣列就是我要找的。除此之外,我的情況只是更具體一些。如果我擁有的數組不是普通類型數組,而是特定類的引用數組。假設我只想移除其元素member.order = 2
,那麼謂詞將如何?
你可以做到這一點使用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))
也讓我指出,這兩種功能解決一個稍微不同的啞問題:從陣列全部刪除滿足條件的元素。從字面上看,您的問題可能被解讀爲僅刪除第一個元素的發生。這樣的閱讀仍然給你一個機會有創造力貢獻你的功課:)
太好了。你介意看我的更新,對我的情況更具體一點嗎? – user2431438
@ user2431438'Array.filter(fun x - > x.order <> 2)' –
因爲你看起來在做這個課程:http://undergraduate.csse.uwa.edu.au/units/CITS3242/有沒有你還沒有問你的講師嗎? –
因爲這些都是愚蠢的問題,我傾向於經常問這些問題 - 無論如何都爲他節省了有趣的問題。你怎麼知道? – user2431438
你的問題看起來像可疑的家庭作業,並沒有那麼多的F#課程。另外,你應該能夠弄清楚你自己的lambda。 –