Мне кажется логичным, что идентичные подписи должны действовать одинаково.Может кто-нибудь сказать мне, что мне не хватает?
Совместное использование
Использование Array.create
приводит к массиву элементов, которые имеют одинаковое значение.Использование Array.init
вызывает функцию для создания значения каждого элемента.
Следовательно, это выделяет два массива:
let a = Array.create 3 (Array.create 3 0)
, тогда как это выделяет четыре массива:
let b = Array.init 3 (fun _ -> Array.init 3 (fun _ -> 0))
Вы можете предпочесть это в терминах литералов массива, где первый эквивалентен:
let xs = [|0;0;0|]
[|xs;xs;xs|]
, а последний эквивалентен:
let xs = [|0;0;0|]
let ys = [|0;0;0|]
let zs = [|0;0;0|]
[|xs;ys;zs|]