【发布时间】:2020-06-17 22:35:20
【问题描述】:
为了初始化一个二维Int数组如下 https://github.com/apple/swift-evolution/blob/master/proposals/0245-array-uninitialized-initializer.md
var myArray = Array<Int>(unsafeUninitializedCapacity: 10) { buffer, initializedCount in
for x in 1..<5 {
buffer[x] = x
}
buffer[0] = 10
initializedCount = 5
}
// myArray == [10, 1, 2, 3, 4]
我尝试了接下来的两个代码,但它们不起作用:
var myArray = [[Int]](unsafeUninitializedCapacity: 3) { bufferfilas, initializedCountfilas in
for x in 0..<3 {
bufferfilas[x] = [Int](unsafeUninitializedCapacity:3) {buffercolumnas, initializedCountcolumnas in
for y in 0..<3{
buffercolumnas[y] = y
}
initializedCountcolumnas = 3
}
}
initializedCountfilas = 9
}
第二个:
var myArray = [[Int]](var myArray = [[Int]](unsafeUninitializedCapacity: 9) { buffer, initializedCount in
for x in 0..<3 {
for y in 0..<3{
buffer[x][y] = (x*10)+y
}
}
initializedCount = 9
}
swift 5.1 中初始化二维数组的正确方法是哪一种?
提前致谢。
【问题讨论】:
-
您只想初始化一个二维数组,或者您还需要访问未初始化存储?
-
两者,主要目标是初始化,但我想了解Swift5.1中的unsafeUninitializedCapacity。在以前版本的 Swift 中工作:
self.cells = [[Cell]](unsafeUninitializedCapacity:filas, initializingWith:[Cell](unsafeUninitializedCapacity:columnas, initializingWith: UnsafeMutableBufferPointer, Cell(row: 0,col: 0)))
标签: ios arrays swift multidimensional-array initialization