我将如何创建 UInt16 的 3 维数组?
并设置大小,其中每个元素默认设置为 nil
?
我的尝试是
var courseInfo = UInt16?(count:10, repeatedValue: UInt16?(count:10, repeatedValue: UInt16?(count:10, repeatedValue:nil)))
虽然这似乎行不通。有什么想法吗?
最佳答案
您的代码出错是因为您没有创建数组,而是将它们与 UInt16?s 混在一起。
让我们从基本情况开始,如何制作一维数组?
Array<UInt16?>(count: 10, repeatedValue: nil)
如果我们想要一个二维数组怎么办?好吧,现在我们不再初始化 Array<UInt16?>
。我们正在初始化一个由 UInt16? 组成的数组,其中每个子数组都使用 UInt16?s 进行初始化。
Array<Array<UInt16?>>(count:10, repeatedValue: Array<UInt16?>(count:10, repeatedValue:nil))
对 3 维情况重复此操作只需要更多相同的丑陋嵌套:
var courseInfo = Array<Array<Array<UInt16?>>>(count:10, repeatedValue: Array<Array<UInt16?>>(count:10, repeatedValue: Array<UInt16?>(count:10, repeatedValue:nil)))
我不确定这是否是最好的方法,或者对 3D 结构建模,但这是目前最接近您的代码的方法。
编辑:
Martin 在评论中指出一个更简洁的解决方案是
var courseInfo : [[[UInt16?]]] = Array(count: 10, repeatedValue: Array(count : 10, repeatedValue: Array(count: 10, repeatedValue: nil)))
通过将类型声明移到前面来工作,使 repeatedValue:
参数明确。
关于swift - 如何创建带有设置大小的 3D 可选数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34666393/