我正在嘗試構建一個3D數組。這裏是我從2D數組修改的代碼。 3D陣列不會將我的陣列從我定義的值中打印出來。我的下標中有我的getter和setter錯誤。有人可以提醒我嗎?xcode swift 3D arrays
import UIKit
class Array3D {
var zs:Int, ys:Int, xs:Int
var matrix: [Int]
init(zs: Int, ys:Int, xs:Int) {
self.zs = zs
self.ys = ys
self.xs = xs
matrix = Array(count:zs*ys*xs, repeatedValue:0)
}
subscript(z:Int, ys:Int, xs:Int) -> Int {
get {
return matrix[ zs * ys * xs + ys ]
}
set {
matrix[ zs* ys * xs + ys ] = newValue
}
}
func zsCount() -> Int {
return self.zs
}
func colCount() -> Int {
return self.ys
}
func rowCount() -> Int {
return self.xs
}
}
var dungeon = Array3D(zs: 5, ys: 5, xs: 5)
dungeon[1,0,0] = 1
dungeon[0,4,0] = 2
dungeon[0,0,4] = 3
dungeon[0,4,4] = 4
print("You created a dungeon with \(dungeon.zsCount()) z value \(dungeon.colCount()) columns and \(dungeon.rowCount()) rows. Here is the dungeon visually:\n\n")
for z in 0..<5 {
for y in 0..<5 {
for x in 0..<5 {
print(String(dungeon[z,x,y]))
}
print("\n")
}
print("\n")
}
@Antonion謝謝!有用! z和zs,y和ys,x和xs有什麼區別?你會向我解釋爲什麼是線性座標z * ys * xs + y * xs + x?我真的很感謝你的幫助! – 2015-01-21 09:14:21
@Cherry_thia更新了答案 - 希望它有幫助 – Antonio 2015-01-21 10:07:32
感謝您的詳細解釋。我仍然需要一些時間來了解它,我很欣賞它。 – 2015-01-21 12:54:34