Они не одинаковы.
Массивы являются ссылочными типами и хранятся в куче. Когда вы создаете массив с другим массивом в качестве значения по умолчанию, вы сохраняете ссылки на один и тот же массив снова и снова.
Числа это другая вещь. Они неизменны и хранятся по значению в стеке. Таким образом, вы не можете изменить значение 1
на что-либо кроме 1
.
Чтобы создать «неровный» массив, вам нужно вызвать Array.init
изнутри инициализатора на первый Array.init
вызов, чтобы создать новые массивы для каждого слота.
Также; Вы можете использовать Array.create
, если хотите, чтобы в каждом слоте было одинаковое значение. Будьте осторожны с ссылочными типами.
let A = Array.init 3 (fun _ -> Array.create 2 0)