Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift foor循环行为怪异_Swift_For Loop - Fatal编程技术网

Swift foor循环行为怪异

Swift foor循环行为怪异,swift,for-loop,Swift,For Loop,我有下面的代码 var myArray : [String] = ["1", "2", "3", "4", "5"] for var i in 0..<myArray.count { print("i==\(i)==\(myArray[i])") myArray.remove(at: i) i = i-1 } 我期待的日志是 i==0==1 i==0==2 i==0==3 i==0==4 i==0==5 我这样说是因为当我在for循环中设置I=I-1时,I将始终

我有下面的代码

var myArray : [String] = ["1", "2", "3", "4", "5"]
for var i in 0..<myArray.count {
    print("i==\(i)==\(myArray[i])")
    myArray.remove(at: i)
    i = i-1
}
我期待的日志是

i==0==1
i==0==2
i==0==3
i==0==4
i==0==5
我这样说是因为当我在for循环中设置
I=I-1
时,
I
将始终为0

这意味着变量
i
不具有code
i=i-1

知道为什么会这样吗


和我在java中的代码一样,它工作得很好

ArrayList<String> mm = new ArrayList<>();
mm.add("1");
mm.add("2");
mm.add("3");
mm.add("4");
mm.add("5");

for(int i=0; i<mm.size(); i++){

    Log.d("mm", "i=="+i+"=="+mm.get(i));

    mm.remove(i);

    i = i-1;

}

Swift for循环的工作方式与您想象的稍有不同


首先要注意的是,中
后面的位只计算一次。它不会在每次迭代中获得数组的计数<“我这样说是因为当我在for循环中设置I=0时,它不应该出现在第二个循环中。”为什么不呢?顺便说一句,这是代码的正确输出。这里的解释非常清楚:您需要反向迭代集合order@RakeshaShastri当前位置我更新了问题。。。请检查…顺便问一下,这段代码只是对语言的假设性实验,还是应该在实际项目中使用?因为在通过索引访问集合时,从当前正在迭代的集合中删除元素总是一个坏主意。
第二件事是我想的。
。。所以,我想确认一下,这种行为是Swift的一部分。@FahimParkar它是Swift的一部分<在我所知道的大多数其他语言的循环中,
for…也有这种行为。循环的C风格不能做到这一点。
ArrayList<String> mm = new ArrayList<>();
mm.add("1");
mm.add("2");
mm.add("3");
mm.add("4");
mm.add("5");

for(int i=0; i<mm.size(); i++){

    Log.d("mm", "i=="+i+"=="+mm.get(i));

    mm.remove(i);

    i = i-1;

}
i==0==1
i==0==2
i==0==3
i==0==4
i==0==5