Kann der Grund für ein solches Verhalten nicht verstehen:Arrays ist und gezackten Array
let example count =
let arr = Array.create 2 (Array.zeroCreate count)
for i in [0..count - 1] do
arr.[0].[i] <- 1
arr.[1].[i] <- 2
arr
example 2 |> Array.iter(printfn "%A")
Druck:
[|2; 2|]
[|2; 2|]
https://dotnetfiddle.net/borMmO
Wenn ich ersetzen:
let arr = Array.create 2 (Array.zeroCreate count)
zu:
let arr = Array.init 2 (fun _ -> Array.zeroCreate count)
Alles wird wie erwartet:
let example count =
let arr = Array.init 2 (fun _ -> Array.zeroCreate count)
for i in [0..count - 1] do
arr.[0].[i] <- 1
arr.[1].[i] <- 2
arr
example 2 |> Array.iter(printfn "%A")
Druck:
[|1; 1|]
[|2; 2|]
https://dotnetfiddle.net/uXmlbn
Ich glaube, der Grund dafür ist die Tatsache, dass das Array - ein Referenz-Typ. Aber ich möchte verstehen, warum das passiert. Da habe ich solche Ergebnisse nicht erwartet.
Danke. Ich dachte so etwas, aber es war nicht offensichtlich für mich =) Jetzt verstehe ich. –