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

时间:2010-12-05 16:19:46

标签: 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

我想做这样的事情:

printfn "Results: %A %A" (d / t) (UOM (d / t));;
"Results: 5 m/s"

提前致谢

1 个答案:

答案 0 :(得分:6)

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

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

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