如何使用F#中的度量单位打印生成的单位?

Jer*_*y E 4 f# units-of-measurement

我开始学习如何在F#中使用度量单位,但我还没有找到这个简单问题的答案.如何在计算后打印结果单位.我知道FSI打印它们所以它们应该以某种方式可用.

例如:

[<Measure>] type m;;

[<Measure>] type s;;

let d = 10<m>;;
val d : int<m> = 10

let t = 2<s>;;
val t : int<s> = 2
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

printfn "Results: %A %A" (d / t) (UOM (d / t));;
"Results: 5 m/s"
Run Code Online (Sandbox Code Playgroud)

提前致谢

Tom*_*cek 6

不幸的是,这是不可能的.

度量单位仅在编译时存在.编译程序时,它们将被编写(因为.NET没有任何方法来表示类型的单位).这意味着在运行时,计算结果将是正确的float.我认为除了在代码中将单位写为字符串之外没有任何其他方法...

前段时间有一个相关的问题.它有一些更多的细节,也解释了为什么你不能使用反射获取有关单位的信息.