swift-控制流程01-for循环


import UIKit


class ViewController: UIViewController {

  

  override func viewDidLoad() {

   super.viewDidLoad()

    

    /**

    For循环用于多次执行一组语句,Swift提供了两种For循环:

    For-in循环用于执行一组语句中的每一项,

    包括范围(range)、序列(sequence)、集合(collection)和进展(progression)

    For条件递增循环用于执行满足一个特定条件时的一组语句,通常为每次循环结束时增加计数值一次

  

   你可以使用for-in循环去迭代集合项,例如数字范围,数组项或者字符串中的字符。

   下面的例子打印了一些5的倍数表

    */

    for index in 1...5 {

      

      print("\(index)次执行循环")

      

    }

    

    /**

    被迭代的集合是一个包含15的闭区间值,正如在用闭区间操作符(…)

    索引值为范围中的第一个值(1),同时循环里的语句将被执行。

    在这种情况下,循环里只包含一条语句,它用于第几次执行循环。

    在这条语句被执行后,索引值将被更新为范围中的第二个值(2),同时print函数再次被调用,

    这个过程将持续直到范围中的末尾。

     

    在上述的例子中,索引是一个常数,它在循环每次迭代开始时被自动设定。

    正如,它使用前可以不用声明,不需要用let关键字来声明,通过在循环中包含来做隐式声明。

    索引常量只在循环体内有效,

    如果你想在循环体之后检查索引值,或者你想让它像变量而不是常量那样工作时,

    你必须在循环体之前手动声明。

     */

     

     /**

    如果你不需要范围中的每一个值,你可以通过在变量名处使用下划线来忽略索引值:

     */

    let base = 3

    let power = 10

    var answer = 1

    for _ in 1...power {

      

     print("answer==\(answer) and base==\(base)")

      answer *= base

      

    }

    

    /**

    使用for-in循环来迭代数组中的项:

     */

   letfruit = ["banana","apple","melon","tomato","pich"]

    for name in fruit {

      

     print("I like to eat \(name)!")

      

    }

    

    /**

    可以通过获取关键字-值对来迭代字典中的数据,

    当迭代字典中的数据时,字典中的每一项将以(关键字-)元组作为返回值。

    你可以在for-in循环体中用显示命名常数来分解(关键字-)元组的数据以供使用,

    但是顺序不是依次的,因为字典的数据是无序的

     */

   letnumberOfLegs = ["people":"2","cat":"4","spider":"8","ant":"so much"]

    

    for (object,legs) in numberOfLegs {

      

      print("\(object) has\(legs) legs")

      

    }

    

    for cha in "hello".characters {

      

      print(cha)

      

    }

    

    for var index = 0 ; index < 3 ;++index {

      

     print("first for index is \(index)")

      

    }

    /**

    C语言一样,分号将For循环分为3个部分,

    不同的是,Swift不需用圆括号将他们包括起来。

    执行流程如下:

     1.循环启动时,初始化表达式(initialization expression)被调用一次,初始化循环所需的常量和变量。

     2.条件表达式(condition expression)被调用,如果表达式的结果为false,循环结束,继续执行for循环后的代码;如果表达式的结果为true,则执行for循环大括号内部的代码(statements)。

     3.执行所有语句(statements)之后,执行递增表达式(increment):通常会增加或减少计数器的值,或者根据语句(statements)修改某一个变量。当递增表达式(increment)执行完成后,重复执行第2步。如此循环下去

     

    在初始化表达式中声明的常量和变量(比如var index = 0)只在for循环的生命周期里有效。

    如果想在循环结束后继续使用index,需要要在循环开始之前声明index

     */

    

    var index = 0

    for ;index<3;++index {

      

     print("second for index is \(index)")

      

    }

   print("index out of for is \(index)")

    

    /**

    index 在循环结束后最终的值是 3 而不是 2

    因为最后一次递增表达式 ++index 被调用将 index 设置为 3,导致 index < 3 false,终止循环

    */

    

  }

}



版权声明:本文为WKFfantasy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。