5

我开始学习如何在 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"

提前致谢

4

1 回答 1

7

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

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

前段时间有一个相关的问题。它有更多详细信息,还解释了为什么您无法使用反射获取有关单位的信息。

于 2010-12-05T16:48:38.767 回答