在Scala中实现Measured值
发布时间:2020-12-16 09:27:47 所属栏目:安全 来源:网络整理
导读:测量值由(通常为非负)浮点数和度量单位组成.关键在于表示现实世界的数量以及管理它们的规则.这是一个例子: scala val oneinch = Measure(1.0,INCH)oneinch : Measure[INCH] = Measure(1.0)scala val twoinch = Measure(2.0,INCH)twoinch : Measure[INCH] =
测量值由(通常为非负)浮点数和度量单位组成.关键在于表示现实世界的数量以及管理它们的规则.这是一个例子:
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会话.我甚至不确定语法,我只是想能够处理诸如添加测量数量(即使是混合单位),乘以测量数量等等,理想情况下,我喜欢Scala自夸式类型系统以保证在编译时,表达式是有意义的. 我的问题: >这个问题是否有现存的术语? 因为承包商正在使用码和磅而美国宇航局正在使用米和牛顿,因此失去了A $330-million Mars probe.测量库可以防止崩溃. 解决方法
嗯,这个功能存在于Java中,这意味着您可以直接在Scala中使用它.
jsr-275,已移至google code. jscience实施规范.这是一个很好的introduction.如果你想要一个更好的界面,我会用它作为基础并围绕它构建一个包装器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |