从csv文件导入数字时,我需要将它们转换为带有单位的浮点数。
目前我使用内联函数执行此操作:
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)
答案 0 :(得分:2)
看起来测量单位目前不能是类型参数(不知道这是否会改变)。所以写这个的最短路是:
data |> List.map float |> List.map ((*) 1.0<m>)
修改
另请参见此处FloatWithMeasure
http://msdn.microsoft.com/en-us/library/ee806527(VS.100).aspx
答案 1 :(得分:1)
你有两次必须映射的原因吗?这有什么问题:
data |> List.map (fun x -> (float x) * 1.0<m>)