为什么我在 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)
还要注意,编译器足够聪明,可以推断出数据是一个整数列表,因此您可以根据需要删除类型注释。
为什么 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)
还要注意,编译器足够聪明,可以推断出数据是一个整数列表,因此您可以根据需要删除类型注释。