如果项目不相等,我将如何从数组中删除项目?
例如,对于具有相等性的项目,我可以执行以下操作:
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())
答案 0 :(得分:4)
由于您正在讨论身份比较,请使用构建参考比较
let arrayWithoutReq =
originalFifoRequests
|> Seq.filter (fun req ->
Object.ReferenceEquals(req, fullfilableReq) |> not)
|> Seq.toArry