我正在嘗試製作一個動態大小的鋸齒陣列來表示一個非常簡單的控制檯遊戲的遊戲網格。嘗試編輯動態鋸齒陣列中的單個元素編輯多個
# Determine the size of the board. Enforce the size so as to not make it too large.
$boardSize = 5
# Game board characters
[char]$bushCharacter = "#"
# Initialize Game board object
$gameBoard = ,(@($bushCharacter) * $boardSize) * $boardSize
想法是,如果我要在屏幕上打印出來。我會得到像我這樣的東西。
0..($boardSize - 1) | ForEach-Object{$gameBoard[$_] -join ""}
#####
#####
#####
#####
#####
一切都很好,直到我試圖做出改變,以單個項目:$gameBoard[0][1] = "F"
。從重印網格我預期的結果是
#F###
#####
#####
#####
#####
我的實際輸出爲
#F###
#F###
#F###
#F###
#F###
這告訴我,我做了數組引用對方的所有行。爲什麼這段代碼不會創建獨立的唯一數組?我能做些什麼改變才能實現。我知道其他方法可以像+=
這樣的索引循環工作,但我認爲這種方法是一種更好的做法。
我知道我靠近搞清楚了這一張給自己,但這個_seemed_是一個很好的問題。 – Matt
外部數組的值全部引用相同的內部數組(比較'$ gameBoard [0] .GetHashCode()'和'$ gameBoard [1] .GetHashCode()') –
@ MathiasR.Jessen假設儘可能多。不會有數字乘以它會做到這一點,但無論如何。你知道我會做什麼來改變它,或者我應該做一個不同的創作方法嗎? – Matt