【问题标题】:Haxe add or remove item during iterationHaxe 在迭代期间添加或删除项目
【发布时间】:2014-12-11 20:42:12
【问题描述】:

在 Haxe 中迭代列表时可以从列表中添加和删除项目吗?或者它会产生奇怪的行为吗? 我很怀疑,因为在 C# 中完全禁止这样做。

架构

【问题讨论】:

    标签: list iteration add haxe


    【解决方案1】:

    标记为正确的答案是跳过第一个元素。 正确的代码是:

    var i:Int = 0;      
    while (i < array.length) {
        if (removeCondition) {
            array.splice(i, 1);
        } else i++;
    }
    

    另外,如果您不介意反向迭代:

    var i = array.length;
    while (i-- > 0) 
       if (removeCondition) 
          array.splice(i, 1);

    【讨论】:

    • 更新了一个选项
    【解决方案2】:

    它不会很好地结束......你可以迭代数组并删除元素:

    var i:Int = 0;      
    while (i < array.length) {
        i++;
        if (removeCondition) {
            array.splice(i, 1);
            i--;
        }
    }
    

    编辑如果你使用列表,方法应该类似,到目前为止还没有用列表做过。

    【讨论】:

    • 警告:正如下面 Mihail 的回答中提到的,这会跳过数组中的第一个元素。使用 Mihail 的代码
    猜你喜欢
    • 2018-07-24
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2014-07-09
    • 2011-03-03
    • 1970-01-01
    相关资源
    最近更新 更多