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

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

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

但是我想知道是否有更优雅的方法来做到这一点 - 或者我是否必须使用转换功能创建我自己的'单元'模块?

这样的事情真的很棒,但我怀疑这是可能的......

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

这与我之前提出的问题相反(如何通常删除F#度量单位)。

更新:对于自制单位,我已经尝试了这个,这没问题:

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

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

或者,按照此答案

data |> List.map (float >> km.lift)
有帮助吗?

解决方案

看起来测量单位目前不能是类型参数(不知道这是否会改变)。所以写这个的最短路是:

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

修改

现在还可以参见 FloatWithMeasure

http://msdn.microsoft.com/ EN-US /库/ ee806527(VS.100)的.aspx

其他提示

你有两次必须映射的原因吗?这有什么问题:

data |> List.map (fun x -> (float x) * 1.0<m>)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top