【发布时间】:2016-05-09 03:34:47
【问题描述】:
如果数组不相等,我如何从数组中删除一项?
例如,对于具有相等性的项目,我可以执行以下操作:
Array.filter (fun x -> x <> itemToRemove) array
不幸的是,这不起作用,因为在我的情况下,我有一个元组,其中第三项是一个柯里化函数(我稍后会提供最后一个参数),而这不具有相等性。
编辑:
这是我遇到问题的确切示例:
let arrayWithoutReq = Array.filter (fun (req:(string * Port<'a> * ('a -> bool) option * int * DateTime)) -> req <> fullfilableReq) (originalFifoRequests.toArray())
【问题讨论】:
-
你能展示 MCVE 吗?
-
这完全取决于你的平等规则是什么。您是在谈论身份(完全相同的对象)还是值比较(两个不同的对象但在语义上表示相同的值)
-
@FoggyFinder 添加了我遇到问题的代码
-
太棒了,现在告诉我你有什么以及你最终想要得到什么。
-
虽然这可以完成,如答案所示,但这并不意味着它应该在这里完成。说真的,看看那个元组类型!它需要引用相等吗?只需为它定义一个类型!有一个
[<ReferenceEquality>]属性适用于记录和联合。