当尝试在二维数组中设置值时,如下所示:
let a = Array.make 5 (Array.make 5 0);;
a.(0).(0) <- 4;
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它将放在二维数组中包含的每个数组的4索引处。ja
为什么会这样,我如何才能将其设置为a[i][j]仅4?
问题在于如何初始化矩阵。您正在创建一个内部数组,然后将其分配给外部数组的每个单元格,而不是为每个单元格创建一个新数组。你正在做的事情相当于这样:
let inner = Array.make 5 0 in
let outer = Array.make 5 inner in
inner.(0) <- 4
Run Code Online (Sandbox Code Playgroud)
您可以使用Array.init创建外部数组来代替,其行为完全相同,Array.make只是它需要一个初始化函数而不是直接插入的值:
Array.init 5 (fun _ -> Array.make 5 0)
Run Code Online (Sandbox Code Playgroud)
但创建二维数组更方便的是Array.make_matrix:
Array.make_matrix 5 5 0;;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |