Swift - 如何知道循环何时结束?

dan*_*tin 7 xcode loops ios swift

请原谅我,因为我对swift和编程新.

当我说我努力理解这一点时,请相信我,但我根本不能并且非常感谢任何帮助.

说我有这个功能:

func loop() {
  for var i=0; i<5; i++ {
  println(i)
  }
}
Run Code Online (Sandbox Code Playgroud)

并且我想打印到日志"循环已完成"一旦这个循环完成并完成运行,我该怎么做?如果我做:

func loop() {
  for var i=0; i<5; i++ {
  println(i)
  println("loop has finished")
  }
}
Run Code Online (Sandbox Code Playgroud)

每次i递增后,"循环已完成"将被打印.

我已经尝试过阅读闭包和完成处理程序了,但是现在这一切都在我头脑中,我真的不明白我是如何完成上述任务的.

如果有一个天使可以告诉我如何完成上面的例子,我将负债累累.

谢谢你对我目前可怜的知识的耐心!

joh*_*lay 12

要产生与其他人发布的结果相同但具有基本闭包语法的结果:

func printFunction() {
    println("loop has finished")
}

func loopWithCompletion(closure: () -> ()) {
    for var i=0; i<5; i++ {
        println(i)
    }
    closure()
}
Run Code Online (Sandbox Code Playgroud)

这就是你怎么称呼它:

 loopWithCompletion(printFunction)
Run Code Online (Sandbox Code Playgroud)

Swift 3更新:

func printFunction() {
    print("loop has finished")
}

// New for loop syntax and naming convention
func loop(withCompletion completion: () -> Void ) {
    for i in 0 ..< 5 {
        print(i)
    }
    completion()
}
Run Code Online (Sandbox Code Playgroud)

然后像这样称呼它:

loop(withCompletion: printFunction)
Run Code Online (Sandbox Code Playgroud)

要么

loop {
    print("this does the same thing")
}
Run Code Online (Sandbox Code Playgroud)


eca*_*ano 7

这是您尝试实现的循环:

func loop() {
  for var i=0; i<5; i++ {
    println(i)
    println("loop has finished")
  }
}
Run Code Online (Sandbox Code Playgroud)

"循环已完成"的原因被打印5次是因为它在for循环中.

当循环重复时(我在此处输入"在此处输入代码),将在括号之间运行任何内容

for var i=0; i<5; i++ {
   enter code here
 }
Run Code Online (Sandbox Code Playgroud)

循环的工作方式是,它将重复直到条件完成:即i<5.如你所说,你的i变量从0开始 var i=0,每次循环重复时,这个数字增加1,如中所述i++

一旦i小于5(i是等于5或大于5个),则下面的for循环将被运行的代码.

所以如果你把你的println("循环已经完成")放在forloop之后,你知道它会在循环完成时运行,如下所示:

func loop() {
  for var i=0; i<5; i++ {
    println(i)
  }
  println("loop has finished")
}
Run Code Online (Sandbox Code Playgroud)