为什么F#编译器会抱怨" RequireQualifiedAccess ..."对于Open语句,并在以下位置使用List.map时出错:
open Microsoft.FSharp.Collections.Map
type Gen =
static member Calc (data : int[]) = data.List.map (fun x -> x + 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)
还要注意编译器足够聪明,可以推断出数据是一个整数列表,因此如果愿意,可以删除类型注释。