为什么我在F#中使用List.map会出错?

时间:2015-02-28 13:19:13

标签: visual-studio-2013 f#

为什么F#编译器会抱怨" RequireQualifiedAccess ..."对于Open语句,并在以下位置使用List.map时出错:

open Microsoft.FSharp.Collections.Map
type Gen = 
    static member Calc (data : int[]) = data.List.map (fun x -> x + 1)

1 个答案:

答案 0 :(得分:2)

首先,您的open语句与List.map无关,它会打开Map模块,您无法打开但必须明确访问Map.因此错误。 Map模块包含与List模块中的函数类似的函数,但适用于映射(类似于C#中的字典)。

函数List.map只是调用:List.map。它是独立的,而不是data对象的一部分,顺便说一下,您已将其定义为具有(data : int[])的数组。

所以我认为你打算写的代码是:

type Gen =
    static member Calc (data : List<int>) = data |> List.map (fun x -> x + 1)

还要注意编译器足够聪明,可以推断出数据是一个整数列表,因此如果愿意,可以删除类型注释。