首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT5.1用unsafeUninitializedCapacity初始化阵列多维

SWIFT5.1用unsafeUninitializedCapacity初始化阵列多维
EN

Stack Overflow用户
提问于 2020-03-05 10:13:58
回答 1查看 356关注 0票数 0

为了初始化https://github.com/apple/swift-evolution/blob/master/proposals/0245-array-uninitialized-initializer.md后面的二维Int数组

代码语言:javascript
复制
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]

我试过下两种代码,但它们不起作用:

代码语言:javascript
复制
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
}

第二项是:

代码语言:javascript
复制
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
}

哪一种方法是正确的方法来初始化一个二维数组在快速5.1?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 10:50:12

下面是来自文档的初始值声明

代码语言:javascript
复制
init(unsafeUninitializedCapacity: Int, initializingWith initializer: (inout UnsafeMutableBufferPointer<Element>, inout Int) throws -> Void) rethrows

要创建二维数组,Element应该是另一个数组。如果希望将第二个数组初始化为普通数组,而不是使用unsafeUninitializedCapacity,请参见下面的示例

代码语言:javascript
复制
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
}

不安全版本

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60542924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档