当前位置: 首页 > 面试题库 >

如何创建固定大小的对象数组

汝和裕
2023-03-14
问题内容

在Swift中,我试图创建一个由64个SKSpriteNode组成的数组。我想先将其初始化为空,然后将Sprites放在前16个单元格中,然后将最后16个单元格中(模拟象棋游戏)。

根据我在文档中了解的内容,我期望会出现以下情况:

var sprites = SKSpriteNode()[64];

要么

var sprites4 : SKSpriteNode[64];

但这是行不通的。在第二种情况下,我收到一条错误消息:“尚不支持定长数组”。那可以是真的吗?对我来说,这听起来像是一项基本功能。我需要通过它们的索引直接访问元素


问题答案:

尚不支持定长数组。这实际上是什么意思?并不是说您不能创建包含n很多东西的数组-显然,您可以做的只是let a = [ 1, 2, 3 ]获得三个IntS 的数组。这仅意味着数组大小不是您可以声明 为类型信息的东西

如果您想要一个nils 数组,则首先需要一个可选类型的数组—
[SKSpriteNode?]而不是[SKSpriteNode]—如果您声明一个非可选类型的变量,无论是数组还是单个值,都不能为nil。(还要注意,[SKSpriteNode?][SKSpriteNode]?
不同的是,您需要一个可选数组,而不是一个可选数组。)

在设计上,Swift非常明确地要求初始化变量,因为对未初始化引用内容的假设是使用C(和某些其他语言)编写的程序可能会出错的方式之一。因此,您需要明确要求一个[SKSpriteNode?]包含64
nils 的数组:

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

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

if var sprites = [SKSpriteNode?](repeating: nil, count: 64){
    sprites[0] = pawnSprite
}


 类似资料:
  • 问题内容: 我想用Java创建一个Stack,但是要固定大小。例如,创建一个新的堆栈,将大小设置为10,然后在将项目推入堆栈时将其填满,并在将其填满到十时将堆栈中的最后一个项目推出(移出)。我想使用Stack,因为它使用LIFO,非常适合我的需求。 但是Stack从Vector继承的setSize()方法似乎并没有真正限制Stack的大小。我想我缺少有关堆栈如何工作的信息,或者堆栈并不是要受到约束

  • 问题内容: 在C ++中,我可以创建如下数组: 在python中,我只知道我可以声明一个列表,而不要附加一些项目或类似。 我可以按给定的大小(如c ++)初始化列表,并且不进行任何赋值吗? 问题答案: (tl;博士:您问题的确切答案是或,但您可能不在乎,可以摆脱使用的困扰。) 您可以将列表初始化为所有相同的元素。使用非数字值在语义上有意义(如果使用它会在以后产生错误,这是一件好事)或类似0的值(不

  • 问题内容: 在C中,我们可以找到的大小int,char等我想知道如何获得物体的大小就像一个字符串,整数,等在Python。 相关问题:Python列表(元组)中每个元素有多少个字节? 我使用的XML文件包含指定值大小的大小字段。我必须解析此XML并进行编码。当我想更改特定字段的值时,我将检查该值的大小字段。在这里,我想比较输入的新值是否与XML中的值相同。我需要检查新值的大小。如果是字符串,我可以

  • 相关:切片到固定大小的数组,但是我正在寻找更具体的形式。 理想情况下,我希望构建一个具有以下签名的函数: 因为这还不可能(因为非类型参数不是一件事),所以我不想让函数直接接受数组: 用代替。 以下是我迄今为止最有希望的尝试: 然而,我错过了允许数组强制切片的特性(提示:这不是)。 只要我同意函数只适用于小数组,有没有办法使用安全代码构建这样的函数?

  • 我试图研究它,但没有找到答案。我正在创建一个数据类,在该类中,我想创建一个固定大小的数组。我尝试了以下3个选项: 但是都不行。然而,这确实有效: 如何在数据类中初始化固定大小的字符串数组

  • 问题内容: 因此,我正在从Web服务加载图像,但是图像的大小有时小于或大于其他图像,当我将其放入android的ListView中时,可视化效果看起来很愚蠢。我想固定ImageView的大小,以便仅在图像大小大于预设值时才显示图像的一部分。我已经尝试了所有可以想到的设置setMaxWidth / setMaxHeight,将比例类型设置为centerCrop,使用ClipableDrawable包