swift - 如何创建带有设置大小的 3D 可选数组

标签 swift multidimensional-array option-type uint16

我将如何创建 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/

相关文章:

ios - 如何截取部分屏幕截图并保存到相机胶卷?

javascript - 查找包含数字的子数组的索引

python - 获得二维数组的列计数

ios - 如何在 Swift 2 中使用可选绑定(bind)

Maven 中的 Ant : How to add optional tasks?

swift - 在应用程序被杀死后请求使用通过 UIImagePickerController 选取的视频文件的权限

objective-c - 如何将自定义 NSView 添加到使用 Interface Builder 构建的 UI?

ios - 移位的按钮和标签。 swift

jquery - 如何迭代此表并提取幻灯片的所有信息?

Javascript:不推荐使用参数数组吗?