gpt4 book ai didi

f# - 如何在 Fsharp 的 ResizeArray 中进行比较?

转载 作者:行者123 更新时间:2023-12-02 08:12:18 26 4
gpt4 key购买 nike

如何按函数比较排序:cmp?

type Point =
{
x : float
y : float
}

let s = ResizeArray<Point>()

s.Add{x=1.1 ; y=1.1}
s.Add{x=2.2 ; y=2.2}
s.Add{x=3.3 ; y=3.3}
s.Add{x=2.2 ; y=2.0}

let cmp (A:Point) (B:Point) =
A.x + A.y < B.x + B.y

s.Sort()

//s.Sort()
s |> printfn("%A")

这是结果,但它与函数不正确:cmp

   seq [{x = 1.1;
y = 1.1;}; {x = 2.2;
y = 2.2;}; {x = 2.2;
y = 2.0;}; {x = 3.3;
y = 3.3;}]

我尝试使用 sortWith 但它仍然不正确。你能帮我修一下吗?

type Point =
{
x : float
y : float
}

let s = ResizeArray<Point>()

s.Add{x=1.1;y=1.1}
s.Add{x=2.2;y=2.2}
s.Add{x=1.0;y=1.0}

let cmp (A:Point) (B:Point) =
if (A.x+A.y) >= (B.x+B.y) then 1
else 0

List.sortWith cmp s |> List.iter (fun x -> printfn("%f %f\n") x.x x.y)

最佳答案

您必须提供 Comparison delegate适合你的类型:

s.Sort(fun a b -> a.x + a.y - b.x - b.y |> int)

关于f# - 如何在 Fsharp 的 ResizeArray 中进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530293/

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