gpt4 book ai didi

f# - 受歧视的工会结构/习俗平等

转载 作者:行者123 更新时间:2023-12-01 02:15:09 24 4
gpt4 key购买 nike

我有以下受歧视的联盟:

type ActCard = Cellar of card list 
| Chapel of (card option * card option* card option* card option)
| Smithy | Spy of (card -> bool * card -> bool)

在我将 card -> bool 添加到 Spy 之前,它具有结构相等性。 This question有助于如何为记录执行自定义相等性。但是,我不确定在这种情况下如何最好地实现它。我宁愿不必在 ActCard 中列举每个案例:

override x.Equals(yobj) =
match x, yobj with
| Spy _, Spy _ -> true
| Cellar cards, Cellar cards2 -> cards = cards2
(* ... etc *)

这里有什么更好的方法?

最佳答案

没有更好的方法。如果您不打算使用默认的结构相等性,则必须阐明相等性语义。

编辑

可以做这样的事情。

[<CustomEquality; CustomComparison>]
type SpyFunc =
| SpyFunc of (card -> bool * card -> bool)
override x.Equals(y) = (match y with :? SpyFunc -> true | _ -> false)
override x.GetHashCode() = 0
interface System.IComparable with
member x.CompareTo(y) = (match y with :? SpyFunc -> 0 | _ -> failwith "wrong type")

type ActCard =
| Cellar of card list
| Chapel of (card option * card option * card option * card option)
| Smithy
| Spy of SpyFunc

关于f# - 受歧视的工会结构/习俗平等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com