美文网首页
swift5(2)运算符

swift5(2)运算符

作者: C_G__ | 来源:发表于2020-02-25 14:10 被阅读0次

    感谢作者
    https://www.jianshu.com/p/66a6012d577d

            // 运算符
            let x = 1;
            let (y, z) = (1, 2);
            1 + 2       // equals 3
            5 - 3       // equals 2
            2 * 3       // equals 6
            10.0 / 2.5  // equals 4.0
            "hello, " + "world"  // equals "hello, world"
            9 % 4    // equals 1
            -9 % 4   // equals -1
            let three = 3;
            let minusThree = -three;       // minusThree equals -3
            let plusThree = -minusThree;   // plusThree equals 3, or "minus minus three"
            let minusSix = -6;
            let alsoMinusSix = +minusSix;  // alsoMinusSix equals -6
            var d = 1;
            d += 2; // a is now equal to 3
            
            1 == 1   // true because 1 is equal to 1
            2 != 1   // true because 2 is not equal to 1
            2 > 1    // true because 2 is greater than 1
            1 < 2    // true because 1 is less than 2
            1 >= 1   // true because 1 is greater than or equal to 1
            2 <= 1   // false because 2 is not less than or equal to 1
            
            let name = "world"
            if name == "world" {
                print("hello, world")
            } else {
                print("I'm sorry \(name), but I don't recognize you")
            }
            // Prints "hello, world", because name is indeed equal to "world".
            
            // 元组比较
            // 只限于元组元素少于7个元素
            // 只能用于可比较元素,元素存在布尔值时不能比较
            // 编译错误
    //        if ("blue", false) < ("purple", true) {//!< 编译器直接会报错
    //            print("Binary operator '<' cannot be applied to two '(String, Bool)' operands")
    //        }
            // 对应下标的元素逐个比较
            // 第一个元素不相同,则按第一个比较返回结果
            // 如果第一个相同,则比较第二个元素,以此类推。
            (1, "zebra") < (2, "apple")  // true,第一个已返回布尔值
            (3, "apple") < (3, "bird")    // true,第一个相同,比较第二个
            (4, "dog") == (4, "dog")      // true,都相同
            
            // 身份运算符
            // ===:
            // !==:
            let obj1 = NSView.init();
            let obj2 = NSView.init();
            let obj3 = obj2;
            let (o1, o2, o3) = (obj1, obj2, obj3);
            if o1 === o2 {
                print("同一个对象");
            } else{
                print("不同对象"); // 结果
            }
            if o3 === o2 {
                print("同一个对象"); // 结果
            } else{
                print("不同对象");
            }
            
            // 可Nil合并(Nil-Coalescing)运算符 ??
            // 解包可选a;如果a为nil,则返回默认值b,否则返回a。
            // 表达式中a始终是可选类型。并且b必须与a的类型匹配。
            let nila = a ?? b;
            
            // 封闭范围运算符(Close Range Operator)
            // ...
            for item in 1...8 {
                print(item); //!< 打印 12345678
            }
            // 半开范围运算符(Half-Open Range Operator)
            // ..<
            let array = ["i","am","zhangfei"];
            for index in 0 ..< array.count { //!< 遍历数组
                print("索引:\(index),对应字符串:\(array[index])")
            }
            // 直接输出字符串,形式
            for str in array[0 ..< array.count] {
                print(str);
            }
            print("*************");
            // 局部(单面/侧)范围(One-Sided Ranges)
            // 直接输出字符串 形式1
            for str in array[...] {
                print(str);
            }
            print("*************");
            // 直接输出字符串 形式2
            // 此处`1`:0 < `1` < array.count-1
            for str in array[1...] {
                print(str);
            }
            print("*************");
            // 运行时崩溃,数组下标越界
    //        for str in array[-1...] {
    //            print(str);
    //        }
    //        print("*************");
            // 直接输出字符串 形式3
            // 此处`(array.count-1)`:0 < `(array.count-1)` < array.count-1
            for str in array[...(array.count-1)] {
                print(str);
            }
            print("*************");
            // 运行时崩溃,数组下标越界
    //        for str in array[...8] {
    //            print(str);
    //        }
    //        print("*************");
            
            let range = ...5;
            range.contains(7);   // false
            range.contains(4);   // true
            range.contains(-1);  // true
            
    //        let range2 =  0...;
    //        for i in range2 {//!< 代码无限期的执行
    //            print(i);
    //        }
    
    

    相关文章

      网友评论

          本文标题:swift5(2)运算符

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