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

Why am I getting an error using List.map in F#?

为什么 F# 编译器对 Open 语句报错 "RequireQualifiedAccess ..." 并在

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

首先,您的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)

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