Swift iOS - 如何在循环内的循环完成后执行完成
问题描述:
我在另一个循环内有循环,并且我希望内循环在两个循环完成后都运行完成块。Swift iOS - 如何在循环内的循环完成后执行完成
内环和完成:
func runThenPrint(_ count: Int, completion:()->()){
for num in 0..<(count){
print(num)
}
completion()
}
func imDone(){
print("DONE")
}
外环与内环和完成:
//outer
for num in 0..<5{
//inner
runThenPrint(num){imDone}
}
在操场我越来越:
DONE
0
DONE
0
1
DONE
0
1
2
DONE
0
1
2
3
DONE
但我想:
0
1
2
3
4
DONE
我看了这篇文章link,但它是基于1循环,而不是循环内的循环。我还发现其他群组的帖子,但他们都是基于网络电话。
让这个运行的最好方法是什么?
答
你得到的是完全正常的。请记住,重复调用for循环。所以for num in 0..<5
将使它运行4次。在第一时间,num
是0,所以
for num in 0..<(count)){
print(num)
}
打印什么,然后立即调用完成处理程序,打印“DONE”。第二次,num
为1,因此内循环将运行1次并打印0,然后打印“完成”等等。
所需的输出可以通过使用
runThenPrint(5, completion: imDone)
,你只是想“内部” for循环运行5次来实现。
+0
我已经知道我可以使用内部循环本身。不过谢谢 –
你的代码不能编译。请显示您的真实代码。 – paper1111
外环的目的是什么?你可以用'runThenPrint(5,completion:imDone)'得到所需的输出。 –
@ paper1111在count变量的末尾有一个额外的右括号。 –