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

时间:2015-08-03 01:46:42

标签: ios xcode swift loops

请原谅我,因为我非常喜欢swift和编程。

当我说我已经努力理解这一点时,请相信我,但我根本无法理解,并且非常感谢任何帮助。

说我有这个功能:

func loop() {
  for var i=0; i<5; i++ {
  println(i)
  }
}

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

func loop() {
  for var i=0; i<5; i++ {
  println(i)
  println("loop has finished")
  }
}
然后&#34;循环结束&#34;每次i递增后都会打印出来。

我已经尝试过阅读关闭和完成处理程序了,但此刻我的头脑全部都在我脑海中,我真的不明白我是如何完成上述任务的。

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

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

5 个答案:

答案 0 :(得分:11)

使用基本的闭包语法产生与其他人发布的结果相同的结果:

std::unique_ptr

这就是你所说的:

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

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

Swift 3更新:

 loopWithCompletion(printFunction)

然后这样称呼:

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()
}

loop(withCompletion: printFunction)

答案 1 :(得分:7)

以下是您尝试实施的循环:

func loop() {
  for var i=0; i<5; i++ {
    println(i)
    println("loop has finished")
  }
}

&#34;循环已完成的原因&#34;被打印5次是因为它在for循环中。

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

for var i=0; i<5; i++ {
   enter code here
 }

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

一旦i 小于5(i等于5或大于5),那么将运行for-loop之后的代码。

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

func loop() {
  for var i=0; i<5; i++ {
    println(i)
  }
  println("loop has finished")
}

答案 2 :(得分:4)

~2^64/100

答案 3 :(得分:3)

你的代码不起作用的原因是你在循环中有println()语句,如下所示:

func loop() {
  for var i=0; i<5; i++ {
  println(i)
  println("loop has finished")
  }
}

因此,每次循环循环时,它都会打印出“完成”。

要解决此问题,您需要做的就是在循环之后放置println()语句,如下所示:

func loop() {
  for var i=0; i<5; i++ {
    println(i)
  }
  println("loop has finished")
}

瞧瞧。您的应用现在可以正常运行了!

答案 4 :(得分:0)

您的打印语句总是在每个循环中打印出来。因此,您应该将那条语句放在foreach循环之外:

func loop() {
  for i in 0...<5 {
    print(i)
  }
// it enters here when the loop is finished
  print("loop has finished")
}