Swift创建对象矩阵

时间:2017-05-02 16:23:26

标签: swift

我是Swift的新手,我正在尝试创建一个自定义对象数组。我做了一些研究,主要出现在网上的是:

Array(repeating: Array(repeating: [Object](), count: y), count: x)

或类似但我还没有能够让他们为我工作。 (因为不同的快速版本等而弃用。)现在我有

class ChessPiece {
// class definition...
}

class ChessBoard {
    var board: [[ChessPiece]] = []

    init() {
        board = [[ChessPiece(),ChessPiece(),ChessPiece()],
                 [ChessPiece(),ChessPiece(),ChessPiece()],
                 [ChessPiece(),ChessPiece(),ChessPiece()]]


    }
}

但如果我有100行或列怎么办?难道没有更有效和直接的方法来创建一个包含x行和y列的矩阵吗?

3 个答案:

答案 0 :(得分:1)

你提到的功能很好Array(repeating:count:)

这适用于我的操场:

struct ChessPiece {}

func makeChessPlate(dimension: Int) -> [[ChessPiece]] {
    return Array(repeating: Array(repeating: ChessPiece(), count: dimension), count: dimension)
}
print(makeChessPlate(dimension: 2)) // Result: [[ChessPiece, ChessPiece],[ChessPiece, ChessPiece]]

编辑:请注意,我的示例只能 ,因为我使用了结构而不是类。与类相反,结构体是按值复制的,然后会生成一组唯一对象。

答案 1 :(得分:1)

我只是使用普通的for-in循环

class ChessPiece {
// class definition...
}
class ChessBoard {
var board: [[ChessPiece]] = []

init(row: Int, column: Int) {
    for _ in 1...row {
        var innerArray: [ChessPiece] = []
        for _ in 1...column {
            innerArray.append(ChessPiece())
        }
        board.append(innerArray)
    }
  }
}
let chessBoard = ChessBoard(row: 8, column: 8)

答案 2 :(得分:-3)

您可以使用此循环创建多维数组。

class ChessPiece{
}

var numColumns = 27
var numRows = 52
var array = [[ChessPiece]]()
for column in 0...numColumns {
    array.append(Array(repeating: ChessPiece(), count:numRows))
}

这将创建一个ChessPieces数组数组。