簡體   English   中英

Swift中的多維數組-樣式

[英]Multidimensional arrays in Swift - Style

在Swift中有多個用於聲明多維數組的習慣用法。 考慮以下:

var ia1 = Array<Array<Int>>()
var ia2: Int[][] = []
typealias IntArray = Array<Int>
var ia3 = IntArray[]()
var ia4 = Int[][]()

ia1 += [[1, 2, 3], [2, 3, 4]]
ia2 += [[1, 2, 3], [2, 3, 4]]
ia3 += [[1, 2, 3], [2, 3, 4]]
ia4 += [[1, 2, 3], [2, 3, 4]]

let test = (ia1 == ia2) // true
let test2 = (ia3 == ia4) //true
// etc...

實際上,聲明之間可能會咬住開發人員嗎? 如果不是,是否有充分的理由互相使用?

T[]只是Array<T>語法糖—實現沒有區別。 您喜歡哪種風格是一個見解的問題。

請注意,根據您要建模的內容,多維數組可能不是您想要的。 在內部使用單個數組,並向數據結構的用戶公開多維下標可能更有意義:

class GameBoard {

    let width = 10
    let height = 10
    let board: [Int]

    init() {
        board = [Int](count: width * height, repeatedValue: 0)
    }

    subscript(i: Int, j: Int) -> Int {
        return board[i + j * width]
    }

}

let b = GameBoard()

b[0,0]
b[4,1]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM