美文网首页Swift
Swift 3.0之二、基本运算符

Swift 3.0之二、基本运算符

作者: 麟young | 来源:发表于2016-12-02 15:41 被阅读7次

    1. 常用术语

    运算符包括①一元运算符、②二元运算符、③三元运算符:分别指对一个、两个、三个目标进行操作。
    受到运算符影响的值叫做操作数
    如:在表达式 1 + 2 中, + 符号是一个二元运算符,其中的两个值 12 就是操作数

    2. 赋值运算符

    let b = 10
    var a = 5
    a = b
    // a 的值现在是 10
    
    let (x, y) = (1, 2)
    // x 等于 1, 同时 y 等于 2
    

    但,swift的赋值运算符无返回值:

    if x = y {
        // 这是不合法的, 因为 x = y 并不会返回任何值。
        // 这就避免了赋值符号 (=) 被意外地用于比较符号 (==)
    }
    

    3. 算数运算符

    • 加 ( + ) 加法运算符同时也支持 String 的拼接: "hello, " + "world" // 结果为: "hello, world"
    • 减 ( - )
    • 乘 ( * )
    • 除 ( / )

    余数运算符

     9 % 4   // 结果为: 1
    -9 % 4   // 结果为: -1
    

    一元加号运算符

    为了和一元减号运算符一起出现时对称,为了美。

    let minusSix = -6
    let alsoMinusSix = +minusSix // alsoMinusSix 依然是 -6
    

    4. 组合赋值符号

    += -= *= /= %=,举个栗子🌰:

    var a = 1
    a += 2   // 相当于 a = a + 2, a 现在是 3
    

    5. 比较运算符

    • 值相等 ( a == b )

    • 不相等 ( a != b )

    • 大于 ( a > b )

    • 小于 ( a < b )

    • 大于等于 ( a >= b )

    • 小于等于 ( a <= b )

    • ( === 和 !== )用来判断两个对象的类型是否相同

      元组的比较:从左到右的顺序比较大小,一次一个值,直到找到两个不相等的值为止。举个🌰:

    (1, "zebra") < (2, "apple")   // true, 因为 1 < 2
    (3, "apple") < (3, "bird")    // true, 因为 3 == 3, "apple" < "bird"
    (4, "dog") == (4, "dog")      // true, 因为 4 == 4, "dog" == "dog"
    

    注意: 比较运算符仅支持小于七个元素的元组

    6. 三元条件运算符

    不使用三元运算符:

    let contentHeight = 40
    let hasHeader = true
    var rowHeight = contentHeight
    if hasHeader {
        rowHeight = rowHeight + 50
    } else {
        rowHeight = rowHeight + 20
    }
    // rowHeight is equal to 90
    

    使用三元运算符:

    let contentHeight = 40
    let hasHeader = true
    let rowHeight = contentHeight + (hasHeader ? 50 : 20)
    

    7. 合并空值运算符(??)

    a ?? b 等价于 a != nil ? a! : b, 举个🌰:

    let defaultColorName = "red"
    var userDefinedColorName: String? // userDefinedColorName 默认为 nil
    var colorNameToUse = userDefinedColorName ?? defaultColorName
    // 因为userDefinedColorName 为 nil, 所以 colorNameToUse 被设置为 defaultColorName, 即"red"。
    

    8. 区间运算符

    闭区间运算符 ( ... )

    举个🌰:

    for index in 1...5 { // 包含 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
    

    半开区间运算符 ( ..<)

    举个🌰:

    let names = ["Anna", "Alex", "Brian", "Jack"]
    let count = names.count  // count 为 4
    for i in 0..<count {     // 0, 1, 2, 3, 但不包含4.
        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
    

    9. 逻辑运算符

    • 逻辑 非 ( !a )
    • 逻辑 与 ( a && b )
    • 逻辑 或 ( a || b )

    逻辑非运算符

    逻辑非运算符( !a )转换布尔值, 把true变成false, 把false变成true 。如:

    let allowedEntry = false    // 变量的命名要简洁易懂,方便逻辑判断
    if !allowedEntry {          // 这里可以读作,“如果不允许进入”
        print("ACCESS DENIED")
    }
    // 结果为: "ACCESS DENIED"
    

    逻辑与运算符

    逻辑与运算符(a && b)需要逻辑表达式的两个值都为true,整个表达式的值才为true 。如果第一个值是 false,第二个值就被忽略,表达式结果直接为false。🌰 :

    let enteredDoorCode = true
    let passedRetinaScan = false
    if enteredDoorCode && passedRetinaScan {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // 结果为: "ACCESS DENIED"
    

    逻辑或运算符

    逻辑或运算符(a || b)只要有一个为true,那么整个表达式就是true。如果逻辑或运算符左侧的表达式为 true,那么右侧不再考虑,表达式结果直接为false。🌰 :

    let hasDoorKey = false
    let knowsOverridePassword = true
    if hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // 结果为: "Welcome!"
    

    10. 混合逻辑运算

    多个逻辑运算符组合,常用小括号分隔,让代码更好理解。🌰 :

    let enteredDoorCode = false
    let passedRetinaScan = false
    let hasDoorKey = false
    let knowsOverridePassword = true
    if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // 结果为: "Welcome!"
    

    相关文章

      网友评论

        本文标题:Swift 3.0之二、基本运算符

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