繁体   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