美文网首页首页投稿(暂停使用,暂停投稿)
Swift复习系列:几个常用的运算符类型

Swift复习系列:几个常用的运算符类型

作者: ZYiDa | 来源:发表于2017-09-04 11:26 被阅读10次

    一、三目运算符

    三目运算的一般类型:问题是否成立?结果1:结果2.,问题如果成立,执行结果1;相反,执行结果2
    请看下面的例子,

    var  sectionHeight:Int = 30
    let isResult:Bool = true
    sectionHeight += (isResult == false ? 20:60);
    print(sectionHeight)
    

    如果满足isResult==false,sectionHeight的增加量为20;如果不满足isResult==false,sectionHeight的增加量为60。当然最后的输出结果为:90.
    提示:使用三目运算相比if-else语句,代码更加简洁一些,但是同一代码块使用大量三目运算会降低代码的可读性。

    二、空合运算符

    空合运算符(a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认
    b。表达式a必须是Optional类型。默认值b的类型必须要和a存储值的类型保持一致。
    空合运算符是对以下代码的简短表达方法:

    a != nil ? a! : b

    上述代码使用了三目运算符。当可选类型a的值不为空时,进行强制解封(a!),访问a中的值;反之返回默认值b。空合运算符(??)提供了一种更为简洁的方式去封装条件判断和解封两种行为,显得简洁以 及更具可读性。
    如下,

            /**第一种**/
            let defaultValue = "My default string value"
            var userUseString:String?
            var userReturnValue:String = userUseString ?? defaultValue
            print(userReturnValue)
    
            /**第二种**/
            let secondDefaultValue = "My second default value"
            var secondUseString = userReturnValue ?? secondDefaultValue
            print("\n\(secondUseString)")
    

    第一种,userUseString的默认值为空值可选类型,所以最后返回的是defaultValue的值;
    第二种,userReturnValue在这一步已经有值,不为空,所以会强制解包userReturnValue!,访问其中的值,最后的返回结果为"My default string value"

    第三、区间运算符

    闭区间运算

    先看下面的例子

            for var a:Int in 1...5
            {
                print("\(a) * \(1) = \(a * 1)");
            }
    

    输出结果

    1 * 1 = 1
    2 * 1 = 2
    3 * 1 = 3
    4 * 1 = 4
    5 * 1 = 5
    

    闭区间运算指在1和5之间取值,包括1和5,一般样式为a...b

    半开区间

    例子

            for var b:Int in 1..<5
            {
                print("\(b) * \(1) = \(b * 1)");
            }
    

    输出结果

    1 * 1 = 1
    2 * 1 = 2
    3 * 1 = 3
    4 * 1 = 4
    

    半开区间不同于数学上的开区间,它包含第一个数值,不包含最后一个数值,一般样式为a..<b

    第四、逻辑运算符组合计算

    Swift上面的逻辑或(||)和逻辑与(&&)是左结合的,所以说在多远逻辑操作符的判断中,优先处理左边的运算。
    如下例子,

            let a:Int = 0
            let b:Int = 100
            let c:String = "Swift"
            let d:String = "ObjC"
    
            if  a >= 0 || b < 100 && c > d {
                print("这就是一个逻辑判断测试!");
            }
            else
            {
                print("测试没有通过");
            }
    

    如上 它们会优先处理a >= 0 || b < 100,得到一个中间结果后,然后再与c >d进行逻辑与判断。
    当然,我们可以使用( )括号来表明优先级,比如在 a >= 0 || (b < 100 && c > d)中,它们会优先处理(b < 100 && c > d),然后再处理 a >= 0 || mid

    相关文章

      网友评论

        本文标题:Swift复习系列:几个常用的运算符类型

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