在数组中查找空槽并使用它

时间:2013-08-07 21:29:05

标签: arrays slots squirrel

所以我有一个问题,我在Squirrel已经搞砸了一段时间。 我想创建一个遍历数组内部所有内容的东西,例如:

local array = [1, 2, 3, -1, 5, -1, 7, -1];

并查找那些为-1的那些,我想只使用其中一个,首先出现的那个(在这种情况下是3到5之间)。

在我的脚本中,当有人销毁某个对象时,它会将对象id设置为-1而不是常规数字,因为否则在尝试使用该对象时它只会出错。真的不知道我是否做得很好解释这个。

另一个例子是当玩家连接到某个游戏服务器时,所以我们将id为0,1,3和4的玩家连接起来,所以当下一个玩家连接时他们会获得id 2.这就是我追求的事情。数组。

我尝试了几件事,只有最接近它的是:

for(local i=1; i < Array.len(); i++){
    if(Array[i].id != -1){
      count++;
    } else {
      count = i;
    }
}

但是这个问题是它只需要最后一个ID并替换它,所以我们有对象0,1,2和3 如果我会摧毁3并创建一个新的,没问题。如果我要销毁0,1或2而不是创建一个新的,它将不会占用该槽,而是转到4号,然后不起作用。

感谢阅读,希望那里的任何人都可以帮助我。


解决:
这真的很简单,对于遇到同样问题的其他人来说,这就是我所做的。现在跟着走,这真的很棘手 我做的是我添加了一个“休息”;在else语句中,代码如下:

for(local i=1; i < Array.len(); i++){
    if(Array[i].id != -1){
        count++;
    } else {
        count = i;
        break; // THIS
    }
}

是的,我后来确实击中了自己...

1 个答案:

答案 0 :(得分:1)

array.find(-1)

来自documentation

  

对数组中的值执行线性搜索。返回索引   如果在其他地方找到null,则返回值。