我正在尝试在 F# 中编写一个“度量单位”转换器。
我已经定义了两个度量单位,KWh
并且MWh
我正在尝试编写一个函数来在两者之间进行转换,以在数字类型上进行模式匹配。我可以将 KWh 的浮点数、十进制数和整数转换为 MWh。
[<Measure>]
type KWh
[<Measure>]
type MWh
// want to do this, but can't because x is not x:obj,
// its something like x:float<KWh>
let toMWh x =
match x with
| :? float<KWh> -> x * (1.0<MWh>/1000.0<KWh>)
| :? int<KWh> -> // ...
// above code not valid f#
当我没有 obj 类型时,我无法弄清楚如何正确分支类型。