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 框架?
错误消息
告诉您(seq->'a)
没有实现IComparable
这是真的,因为(seq->'a)
是一个函数,而不是一个序列。
如果您查看Seq.max
的签名,则它仅将序列作为参数。删除 lambda (fun version -> version)
,它应该没问题。
否则,如果要将密钥生成器函数应用于排序,请改用 Seq.maxBy