首页投稿(暂停使用,暂停投稿)

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

2017-09-04  本文已影响10人  ZYiDa

一、三目运算符

三目运算的一般类型:问题是否成立?结果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

上一篇 下一篇

猜你喜欢

热点阅读