加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 06:06:08 所属栏目:百科 来源:网络整理
导读:在Swift中,我试图创建一个64 SKSpriteNode的数组。我想先将它初始化为空,然后我会把Sprites放在前16个单元格,最后16个单元格(模拟一个象棋游戏)。 从我在文档中的理解,我会期望像: var sprites = SKSpriteNode()[64]; 要么 var sprites4:SKSpriteNode
在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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读