如何使用 F# 中的度量单位打印结果单位?

Posted

技术标签:

【中文标题】如何使用 F# 中的度量单位打印结果单位?【英文标题】:How do you print the resulting units using units of measure in F#? 【发布时间】:2010-12-05 16:19:45 【问题描述】:

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

很遗憾,这是不可能的。

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

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

Why can not use reflection in f#

【讨论】:

以上是关于如何使用 F# 中的度量单位打印结果单位?的主要内容,如果未能解决你的问题,请参考以下文章

windows的度量单位有哪几种?

在代码中使用度量单位,从而生活更美好

regexp_substr 提取字符串中的度量单位

如何更新以微米为单位的导出度量的标签值?

F# 运算符重载用于转换多个不同的度量单位

SQL Server:出于数学目的,如何仅选择带有度量单位的数字[重复]