美文网首页
范围运算符

范围运算符

作者: 小金_1180 | 来源:发表于2018-06-19 14:51 被阅读0次

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

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

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

            let count = names.count

            for i in 0..<count {

                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..<count只迭代到3,也就是最后一个元素的索引,这就是半开范围运算符。

    单边范围运算符

        如果范围需要往一个方向持续叠加,闭合范围运算符有一个替代的形式。比如要表示一个数组中索引为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

    相关文章

      网友评论

          本文标题:范围运算符

          本文链接:https://www.haomeiwen.com/subject/gfnleftx.html