【问题标题】:Automatic units of measure conversion in F# (kilometers -> meters) [duplicate]F#中的自动测量单位转换(公里->米)[重复]
【发布时间】:2018-03-03 22:08:22
【问题描述】:

如果能够自动转换计量单位,那就太好了,计量单位只是相同维度的乘数。 (公斤 -> 克,厘米 -> 毫米,公里 -> 米)。根据我在网上阅读的内容:

https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/units-of-measure https://fsharpforfunandprofit.com/posts/units-of-measure/

如果没有辅助功能,我似乎无法正常工作。在我看来,这些转换污染了计算。我想要这样的工作:

[<Measure>] type m
[<Measure>] type km = 1000 * m

下面的也行不通。

let distance = 1000 * 10**3 <m>

这是否可以通过其他方式实现?

【问题讨论】:

    标签: f# units-of-measurement


    【解决方案1】:

    我不知道 F#,但是是的,单位会影响计算。这就是为什么您应该仅在输入期间转换值(例如,读取表单文件/标准输入),始终以相同的单位进行计算,公制在这里是一种选择。然后,最后,将结果从公制转换为您想要的任何单位。

    这样以后很容易添加对新单元的支持

    【讨论】:

    • 当你“假设”一切都在同一个单位中时,问题就来了,但最终事实证明并非如此......计量单位很棒,应该更多地使用它们经常
    • 不,我想让我的代码像散文一样阅读。 F# 很擅长。在这个特定的问题中,我想声明输入和计算,而不需要不必要的琐碎转换。就像我在一张纸上做的一样。
    • 在一张纸上,您不会从您的问题做这个距离的事情。你会做速度=距离/时间,这总是给你速度,但基于距离和速度的单位不同的单位。据我了解,F# 将完全一样。那你的问题是什么?
    • 我认为我不会在我的论文上进行实际计算。至少我会呈现给某人的那个。这是没人关心的实现细节。我们正在讨论一种声明性语言,不是吗?输入、公式和结果。 Excel 很乐意将分数表示为 % 并在计算中使用它。如上所述声明米和公里之间的关系就足以让机器完成它的工作。好像没有这个功能。像“你不应该需要那个”这样的主观意见不是一个很好的答案。就像说“你不应该需要 F#,因为有 C#”一样好。
    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2012-11-29
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多