F#中的数组初始化

6 arrays f# initialization

如何根据给定的记录类型在F#中创建和初始化数组?假设我想创建一个包含100条记录1的数组.

例如

type record1 = {
  value1:string;
  value2:string
}

let myArray = Array.init 100 ?

但似乎Array.init不允许这样做,有没有办法做到这一点?

编辑添加:

当然我可以这样做:

let myArray = [|for i in 0..99 -> { value1="x"; value2="y" }|]

Sta*_* R. 11

这应该做你需要的.希望能帮助到你.

type record1 = {
  value1:string;
  value2:string
}

let myArray  = Array.init 100 (fun x -> {value1 = "x"; value2 = "y"})
Run Code Online (Sandbox Code Playgroud)

或使用泛型

let myArray  = Array.init<record1> 100 (fun x -> {value1 = "x"; value2 = "y"})
Run Code Online (Sandbox Code Playgroud)


CMS*_*CMS 11

您也可以使用Array.create,它创建一个给定大小的数组,并将其所有元素初始化为定义的值:

let myArray  = Array.create 100 {value1="x"; value2="y"}
Run Code Online (Sandbox Code Playgroud)

看一下这个数组操作列表 .

  • 你确定吗?对我来说,这创建了一个包含所有指向同一记录的100个项目的数组.所以如果我说myArray.[5] .value1 < - 100,那么myArray.[10] .value1也会返回100,因为只有一条实际记录(我怀疑).当我使用Array.init 100(fun x-> {value1 ="x"; value2 ="y"})时,它按预期工作. (3认同)