java - 如何在swift的“for循环”中改变i变量
问题描述
您好正在尝试快速执行此 Java 代码。在Java中,代码是:
public class Test{
public static void main(String []args){
int[] arr = new int[6];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[4] = 4;
arr[5] = 5;
for(int i=0;i<=5;i++){
System.out.println("i="+i);
if(arr[i] % 2 == 0) continue;
arr[i] = arr[i] + 1;
i--;
}
}
}
控制台输出是:
i=0 i=1 i=1 i=2 i=3 i=3 i=4 i=5 i=5
Swift 中的相同代码是
var arr = [0,1,2,3,4,5]
for var i in 0...5 {
print("i=\(i)")
if (arr[i] % 2 == 0) {continue}
arr[i] += 1
i = i-1
}
在 Swift 代码中,输出是:
我=0 我=1 我=2 我=3 我=4 我=5
问题是,即使那个编译器强迫我将 i 设置为 var 进行编译, i 的值也不会在循环中发生变化,并且 i 每次设置值 0...5 时都会得到。
我的问题是如何在 Swift 中编写 Java 代码,以便我可以在需要时对 i 进行变异。
解决方案
使用 while 循环:
var i = 0
while i <= 5 {
print("i=\(i)")
if (arr[i] % 2 == 0) {
i += 1
continue
}
arr[i] += 1
}
注意第二个变化:不是i
在末尾减去 1,而是i
在继续循环时只加 1,因为在 while 循环中,i
通常不会改变。
推荐阅读
- node.js - NodeJS 中的 Promise - 带有循环和多次调用
- powershell - 仅将 xml 文件中的第一个字符串替换为 Powershell 中的新字符串
- docker - 是否有 docker API 或 exec.Command 方法可以从给定的容器名称(不是容器列表)中检索容器 ID?
- python - 每次在 selenium python 中更改时获取跨度文本(值)
- windows-10 - SQLCL 与 Adoptopenjdk
- .net - LINQ 2 DB 动态插入表
- html - 使用 laravel 和 Voyager 找不到图像或键入未知 dompdf
- javascript - 遍历特定类的每个子 div (cheerio)
- wso2 - WSO2 tmp 目录
- ios - 阴影在某些 UI 元素上不可见