范围运算符

    Swift提供了多种范围运算符,用来简洁的表达范围值。

闭合范围运算符

    闭合范围运算符(a...b)定义一个表示从a到b的范围,a的值必须不大于b

    闭合范围运算符在你希望迭代范围中所有值的时候很有用,比如在for-in语句中:        

        for index in 1...5 {

            print("\(index) times 5 is \(index * 5)")

        }

        // 1 times 5 is 5

        // 2 times 5 is 10

        // 3 times 5 is 15

        // 4 times 5 is 20

        // 5 times 5 is 25”

半开范围运算符

    半开运算符(a..)定义了一个从a到b但是不包括的b的范围。之所以称之为半开运算符,因为它包含了开始值a但不包括结束值b,和闭合运算符一样,a的值必须不大于b,如果a等于b,那么这个范围是空。

    半开运算符在处理以0为基准的列表类数据会很有用,比如数组,可以使用数组的数组的长度进行迭代:

        let names = ["Anna", "Alex", "Brian", "Jack"]

        let count = names.count

        for i in 0..

            print("Person \(i + 1) is called \(names[i])")

        }

        // Person 1 is called Anna

        // Person 2 is called Alex

        // Person 3 is called Brian

        // Person 4 is called Jack    

    数字中包含4个元素,但是0..

单边范围运算符

    如果范围需要往一个方向持续叠加,闭合范围运算符有一个替代的形式。比如要表示一个数组中索引为2的元素到最后一个元素的范围。这些情况下,可以省略范围运算符中一侧的值。这种范围被称为单边范围运算符,因为范围中值包含了一边的值。比如:

        for name in names[2...] {

            print(name)

        }

        // Brian

        // Jack

        for name in names[...2] {

            print(name)

        }

        // Anna

        // Alex

        // Brian”

    半开运算符也可以写成单边运算符的形式,只需要写上最后的值。就和你同时包含2侧的值一样,最后的值不包含在范围之内。例如:

        for name in names[..<2] {

            print(name)

        }

        // Anna

        // Alex

    除了下标运算,单边运算符也可以用在其他场景中。省略了起始值的单边范围不可以被迭代,因为不知道从哪里开始迭代。省略了终止值的单边范围可以被迭代。省略了终止值的单边范围可以无穷尽的持续叠加,所以你必须要给循环添加一个明确的终止条件。你也可以检查一个单边运算符是不是包含了一个特殊的值,就像下面一样:

        let range = ...5

        range.contains(7)  // false

        range.contains(4)  // true

        range.contains(-1)  // true

你可能感兴趣的:(范围运算符)