System.Version 在 F# 中不实现 System.IComparable

本文关键字:System 实现 IComparable Version | 更新日期: 2023-09-27 18:34:24

我想在 F# 中对一系列Version对象进行排序:

let maxVersion =
    versions
    |> Seq.max (fun version -> version)

编译器生成以下错误消息:

类型"(seq -> 'a)"不支持"比较"约束。例如,它不支持"System.IComparable"接口

当我在Visual Studio中按F12查看Version的元数据时,它说Version只实现了ICloneable,而不是IComparable。但是当我去 sourceof.net 时,它说它实现了IComparable以及其他一些接口。

F# 是否使用不同版本的 .NET 框架?

System.Version 在 F# 中不实现 System.IComparable

错误消息

告诉您(seq->'a)没有实现IComparable这是真的,因为(seq->'a)是一个函数,而不是一个序列。

如果您查看Seq.max的签名,则它仅将序列作为参数。删除 lambda (fun version -> version),它应该没问题。

否则,如果要将密钥生成器函数应用于排序,请改用 Seq.maxBy

相关文章: