【问题标题】:Finding an empty slot in array and using it在数组中找到一个空槽并使用它
【发布时间】:2013-08-09 11:10:24
【问题描述】:

所以我有一个问题,我在 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
    }
}

是的,我后来确实撞到了自己的头……

【问题讨论】:

  • 将您的解决方案作为答案接受它以将问题标记为已正确解决。

标签: arrays slots squirrel


【解决方案1】:
array.find(-1)

来自documentation

对数组中的值执行线性搜索。返回索引 如果发现为 null,则返回该值。

【讨论】:

    猜你喜欢
    • 2014-06-07
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2013-12-03
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多