3

从 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)
4

2 回答 2

2

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

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

编辑

现在也可以FloatWithMeasure在这里查看

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

于 2009-01-07T09:58:26.690 回答
1

有什么理由必须映射两次吗?这有什么问题:

data |> List.map (fun x -> (float x) * 1.0<m>)
于 2009-01-08T12:49:35.830 回答