作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在 F# 中定义一个类型,它有一个 id 和一个值,并且在排序时只考虑值。我已经简化了情况以提供一个有希望的清晰示例。
到目前为止,我有以下内容:
[<CustomEquality; CustomComparison>]
type EquatableValue<'T when 'T : comparison> =
{ id : string; value : 'T }
override x.Equals(yobj) =
match yobj with
| :? EquatableValue<'T> as y ->
x.value = y.value
| _ -> false
override x.GetHashCode() =
hash x.value
interface System.IComparable with
member x.CompareTo yobj =
match yobj with
| :? EquatableValue<'T> as y ->
compare x.value y.value
| _ -> invalidArg "yobj" "cannot compare values of different types"
let a = {id="a";value=5}
let b = {id="b";value=4}
let c = {id="c";value=7}
let d = {id="d";value=1}
let x = [a,b,c,d]
let sorted = x |> List.sort
我希望 sorted
的元素按照(按 id)d、b、c、a 的顺序排列。
但这会导致顺序为 a、b、c、d。
谁能帮助我理解我做错了什么?
非常感谢。
最佳答案
您的列表仅包含一个元素 - 由 4 个值组成的元组:
let x = [a,b,c,d]
使用
let x = [a;b;c;d]
因为list的元素被';'
分割
关于f# - 将 F# List.sort 与具有 CustomComparison 的类型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35207452/
我在这里问一个特定的话题 - 我真的在网上找到了很少的信息。 我正在实现 Minimax 算法的 F# 版本。我现在遇到的问题是我想比较我的树的叶子(下面的数据结构)。搜索 VS 给我的错误,我得到了
我试图在 F# 中定义一个类型,它有一个 id 和一个值,并且在排序时只考虑值。我已经简化了情况以提供一个有希望的清晰示例。 到目前为止,我有以下内容: [] type EquatableValue
我是一名优秀的程序员,十分优秀!