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

发布于 2024-10-06 07:07:44 字数 396 浏览 3 评论 0原文

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

提前致谢

I am beginning to learn how to use units of measure in F# but I haven't found the answer to this simple question yet. How do you print the resultant units after a calculation. I know that FSI prints them so they should be available somehow.

For example:

[<Measure>] type m;;

[<Measure>] type s;;

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

let t = 2<s>;;
val t : int<s> = 2

I want to do something like this:

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

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

波浪屿的海角声 2024-10-13 07:07:44

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

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

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

Unfortunately, this is not possible.

Units of measure exist only at compile time. When you compile the program, they will be ereased (because .NET doesn't have any way of representing units for types). This means that at the runtime, the result of your calculation will be just float. I don't think there is any way other than just writing units as string in your code...

There was a related question some time ago. It has some more details and also explains why you cannot get information about units using reflection.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文