gpt4 book ai didi

scala - 在 Scala 中实现测量值

转载 作者:行者123 更新时间:2023-12-04 09:21:33 26 4
gpt4 key购买 nike

测量值由(通常为非负)浮点数和测量单位组成。关键是要表示现实世界的数量,以及管理它们的规则。下面是一个例子:

scala> val oneinch = Measure(1.0, INCH)
oneinch : Measure[INCH] = Measure(1.0)
scala> val twoinch = Measure(2.0, INCH)
twoinch : Measure[INCH] = Measure(2.0)
scala> val onecm = Measure(1.0, CM)
onecm : Measure[CM] = Measure(1.0)
scala> oneinch + twoinch
res1: Measure[INCH] = Measure(3.0)
scala> oneinch + onecm
res2: Measure[INCH] = Measure(1.787401575)
scala> onecm * onecm
res3: Measure[CMSQ] = Measure(1.0)
scala> onecm * oneinch
res4: Measure[CMSQ] = Measure(2.54)
scala> oncem * Measure(1.0, LITER)
console>:7: error: conformance mismatch
scala> oneinch * 2 == twoinch
res5: Boolean = true

在你太兴奋之前,我还没有实现这个,我只是虚构了一个 REPL session 。我什至不确定语法,我只是希望能够处理诸如添加测量数量(即使是混合单位)、乘以测量数量等等之类的事情,理想情况下,我喜欢 Scala 引以为豪的类型系统来保证在编译时,表达式是有意义的。

我的问题:
  • 这个问题有现存的术语吗?
  • 这已经在 Scala 中完成了吗?
  • 如果不是,我将如何表示“长度”和“以米为单位的长度”等概念?
  • 这是用其他语言完成的吗?

  • A $330-million Mars probe丢失是因为承包商使用的是码和磅,而 NASA 使用的是米和牛顿。 Measure 库可以防止崩溃。

    最佳答案

    F# 支持它,例如参见 this link为介绍。在 Scala 中已经在 Units 上做了一些工作,例如 herehere .还有一个 Scala 编译器插件,如 this blog post 中所述。 .我曾短暂尝试安装它,但使用 Scala 2.8.1,在启动 REPL 时出现异常,因此我不确定目前是否积极维护此插件。

    关于scala - 在 Scala 中实现测量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331771/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com