F# 测量单位 - 'lifting' 值要 float<something>

标签 f# units-of-measurement

从 csv 文件导入数字时,我需要将它们转换为带单位的 float 。

目前我使用内联函数来执行此操作:

data |> List.map float |> List.map (fun n -> n * 1.0<m>)

但我想知道是否有更优雅的方法来做到这一点 - 或者我是否必须创建自己的带有转换函数的“单位”模块?

如果是这样的话,那就太好了,但我怀疑这是否可能......

data |> List.map float |> List.map lift<m>

这与我之前的问题 ( How to generically remove F# Units of measure ) 相反。

更新:对于自制装置,我已经尝试过这个,效果很好:

[<Measure>]
type km = 
    static member lift (v:float) = v * 1.0<km>

data |> List.map float |> List.map km.lift

或者,按照 this answer 中的问题

data |> List.map (float >> km.lift)

最佳答案

看起来度量单位暂时不能作为类型参数(不知道这是否会改变)。所以最短的写法是:

data |> List.map float |> List.map ((*) 1.0<m>)

编辑

现在另请参阅此处的FloatWithMeasure

http://msdn.microsoft.com/en-us/library/ee806527(VS.100).aspx

关于F# 测量单位 - 'lifting' 值要 float<something>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/419521/

相关文章:

f# - 在 F# 签名文件中定义度量单位

units-of-measurement - getBoundingClientRect 返回的单位是什么?

java - Java 中的内置存储单元转换实用程序?

值两侧测量单位的正则表达式 (200 g/g 200)

azure - DocumentDb 上的文档未被替换

f# - 带函数应用的类型化抽象语法树

F# 中的列表理解与高阶函数

random - F# 使用 System.Random() 获取随机数列表给出相同的列表

f# - F# 中的非类型化/类型化代码引用与宏卫生之间是否存在关系?

python - 是否可以 pickle python "units"单位?