从Array中删除项目,其中的项目不提供相同性

时间:2016-05-08 19:22:35

标签: .net arrays f#

如果项目不相等,我将如何从数组中删除项目?

例如,对于具有相等性的项目,我可以执行以下操作:

Array.filter (fun x -> x <> itemToRemove) array

不幸的是,这不起作用,因为在我的情况下,我有一个元组,其中第三个项目是一个curried函数(我后面提供了最后一个参数),这没有相等。

编辑:

以下是我遇到问题的确切示例:

let arrayWithoutReq = Array.filter (fun (req:(string * Port<'a> * ('a -> bool) option * int * DateTime)) -> req <> fullfilableReq) (originalFifoRequests.toArray())

1 个答案:

答案 0 :(得分:4)

由于您正在讨论身份比较,请使用构建参考比较

let arrayWithoutReq = 
    originalFifoRequests
    |> Seq.filter (fun req -> 
           Object.ReferenceEquals(req, fullfilableReq) |> not)
    |> Seq.toArry