Ниже приводится объявление инициализатора из docs
init(unsafeUninitializedCapacity: Int, initializingWith initializer: (inout UnsafeMutableBufferPointer<Element>, inout Int) throws -> Void) rethrows
Чтобы создать двумерный массив, Element
должен быть другим массивом. Ниже приведен пример, если вы хотите, чтобы ваш второй массив был инициализирован как обычный массив вместо использования unsafeUninitializedCapacity
var my2DArray = Array<Array<Int>>(unsafeUninitializedCapacity: 10) { (buffer: inout UnsafeMutableBufferPointer<Array<Int>>, count: inout Int) in
for a in 0..<5 {
buffer[a] = [a]
}
count = 5
}
Для небезопасной версии
var my2DArrayUnsafe = Array<Array<Int>>(unsafeUninitializedCapacity: 10) { (buffer: inout UnsafeMutableBufferPointer<Array<Int>>, count: inout Int) in
for a in 0..<5 {
buffer[a] = Array<Int>(unsafeUninitializedCapacity: 10, initializingWith: { (subBuffer: inout UnsafeMutableBufferPointer<Int>, subCount: inout Int) in
for subA in 0..<5 {
subBuffer[subA] = subA
}
subCount = 5
})
}
count = 5
}