Swift- 运算符和 Range

        //一. 基本运算符(Basic Operators)
        //数字运算符,逻辑运算符等大多数标准的C语言运算符,数字运算符可以检测运算结果避免溢出(超出存储类型允许的值的范围)
        
        //1. 一元运算符(Unary operators)
        //赋值运算符(Assignment Operator): =
        let b = 7; var a = 10; a = b
        var (x, y) = (1, 2)
        /*
         和C ,OC 的赋值运算符不同,Swift中的赋值运算符不会返回一个值
         if x = y {
         //不合法的语句
         }
         */
        
        //2. 二元运算符(Binary operators)
        //和C ,OC 的数字运算符不同,Swift中的数字运算符不允许值溢出,可以使用Swift的溢出运算符来操作
        //(1) + 运算符, + 支持字符串拼接
        print("hello, " + "world") //输出:hello, world
        // + , - 用于一元运算符时表示正负
        let minusSix = -6; let alsoMinusSix = +minusSix
        
        //(2) 求余运算符(Remainder Operator): %
        // -9 % 4 = -1       9 % -4 = -1
        
        
        //(3) 复合赋值运算符(Compound Assignment Operators)
        var aNum = 1; a += 2   //a = a + 2
        //复合运算符没有返回值,不能用来赋值
        // let b = a += 2  (不合法)
        
        //(4) 比较运算符: ==,>,<,!=,>=,<=, 比较运算符不能用于波尔值比较
        
        //3. 验证运算符(identity operators)
        //Swift 提供了两个验证运算符identity operators  (=== 和 !==),用来检验两个对象的指针是否指向同一个实例变量
        
        //4. 元组的比较
        //两个元组包含元素的个数和对应元素的类型相同才能比较,从左到右逐个比较,比较出第一个后其余的忽略
        //元组比较只能用于比较小于七个元素的元组
        (1, "zebra") < (2, "apple")   //true, 1 < 2为真, zebra和apple没有比较
        (3, "apple") < (3, "bird")    //true, 3 = 3, apple 第一个字母小于 bird 第一个字母
        (4, "dog") == (4, "dog")      //true
        
        
        //5. 三元运算符(Ternary operators)
        //和C语言一样,Swift只有一个三元条件运算符 (a ? b : c)
        
        //计算tableView 行高,如果有header, 行高比内容高度高50, 没有高20
        let contentHeight = 40
        let hasHeader = true
        let rowHeight = contentHeight + (hasHeader ? 50 : 20)
        
        //6. 空合运算符(Nil-Coalescing Operator)
        // a ?? b , a为可选类型
        //如果a不为nil解包a的值返回,否则返回b。如果a非空,不会再评估b的值(短路评估short-circuit evaluation)
        //相当于 a != nil ? a! : b
        
        let defaultColorName = "red"
        var userDefinedColorName: String?   //userDefinedColorName 为nil
        var colorNameToUse = userDefinedColorName ?? defaultColorName // colorNameToUse值为red
        
        
        //二. 区间运算符(Range Operators)
        //1. 闭区间运算符(Closed Range Operator)
        //表达形式: 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
        
        //2. 半开区间运算符(Half-Open Range Operator)
        //表达形式: a..<b, 包含a, 不包含b, a不能大于b。适用于数组遍历
        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
        
        //3. 单边区间(One-Sided Ranges)
        //封闭范围运算符的特殊形式,从一边开始直到结束,包括开始值
        for name in names[2...] {
            print(name)
        }
        // Brian
        // Jack
        
        for name in names[...2] {
            print(name)
        }
        // Anna
        // Alex
        // Brian
        
        for name in names[..<2] {
            print(name)
        }
        // Anna
        // Alex
        
        let range = ...5
        //range 类型为PartialRangeThrough<Int>
        range.contains(7) //false
        range.contains(4) //true
        range.contains(-1) //true
        
        //三.逻辑运算符(Logical Operators)
        //与或非: !, &&,||
        // a && b, a 为false,不再判断b , 短路评估short-circuit evaluation


猜你喜欢

转载自blog.csdn.net/leecsdn77/article/details/80706859