swift – 如何创建一个固定大小的对象数组

前端之家收集整理的这篇文章主要介绍了swift – 如何创建一个固定大小的对象数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在Swift中,我试图创建一个64 SKSpriteNode的数组。我想先将它初始化为空,然后我会把Sprites放在前16个单元格,最后16个单元格(模拟一个象棋游戏)。

从我在文档中的理解,我会期望像:

var sprites = SKSpriteNode()[64];

要么

var sprites4:SKSpriteNode [64];

但它不工作。
在第二种情况下,我得到一个错误说:“固定长度数组尚不支持”。这是真的吗?对我来说,听起来像一个基本的功能
我需要通过他们的索引直接访问元素。

固定长度数组尚不支持。这是什么意思?不是你不能创建很多东西的数组 – 显然你可以让a = [1,2,3]得到一个三个Ints的数组。这意味着简单的数组大小不是你可以声明为类型信息。

如果你想要一个nils数组,你首先需要一个可选类型的数组 – [SKSpriteNode?],而不是[SKSpriteNode] – 如果你声明一个非可选类型的变量,无论是一个数组或单个值,它不能为零。 (还要注意,[SKSpriteNode?]不同于[SKSpriteNode]?…你想要一个可选数组,而不是一个可选数组。)

Swift在设计上非常明确地要求初始化变量,因为关于未初始化引用的内容的假设是C(和一些其他语言)中的程序可能变得有错误的方式之一。所以,你需要明确要求一个包含64个nils的[SKSpriteNode?]数组:

var sprites = [SKSpriteNode?](count:64,repeatedValue: nil)

这实际上返回一个[SKSpriteNode?]?,但是:可选的sprite的可选数组。 (有点奇怪,因为init(count:,repeatedValue :)应该不能返回nil。)要使用数组,你需要解开它。有几种方法可以做到这一点,但在这种情况下,我喜欢可选的绑定语法:

if var sprites = [SKSpriteNode?](count:64,repeatedValue: nil) {
    sprites[0] = pawnSprite
}
原文链接:https://www.f2er.com/swift/321137.html

猜你在找的Swift相关文章