美文网首页
Swift3学习笔记:部分基础运算符

Swift3学习笔记:部分基础运算符

作者: 肉身佛陀 | 来源:发表于2017-02-19 14:59 被阅读12次

    部分基础运算符

    运算符有一元、二元和三元运算符:

    • 一元运算符在单个操作数(例如-a)上操作。一元前缀运算符出现在其操作数(例如!b)之前,一元后缀运算符出现在其操作数之后(如c!)。

    • 二元运算符操作两个操作数(例如2 + 3),并且是中缀,因为它们出现在它们的两个操作数之间。

    • 三元运算符操作三个操作数。像C一样,Swift只有一个三元运算符,三元条件运算符(a ? b : c)。

    1. 分配运算符

    • 该赋值运算符(a = b)初始化或更新的价值a与价值b:
    let b = 10
    var a = 5
    a = b
    // a is now equal to 10
    
    • 如果赋值的右侧是具有多个值的元组,则其元素可以一次分解为多个常量或变量:
    let (x, y) = (1, 2)
    // x is equal to 1, and y is equal to 2
    
    • 与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身不返回值。以下语句无效:
    if x = y {
        // This is not valid, because x = y does not return a value.
    }
    

    此功能防止在实际使用(==)时意外使用(=)。通过使if x = y无效,避免这些类型的错误。

    2. 算术运算符

    • 加法(+)
    • 加法运算符也支持String级联:

    "hello, " + "world" // equals "hello, world"

    • 减法(-)
    • 乘法(*)

    注意:与C和Objective-C中的算术运算符不同,Swift算术运算符不允许值默认溢出。可以通过使用Swift的溢出运算符(例如a &+ b)选择值溢出行为。溢出计算请看高级运算符

    溢出
    var sum:Int8 = 0;
    sum =   70 + 70;      //溢出报错
    print(sum)
    
    • 除法(/)

    3. 求余运算符

    求余数,如例:

    sum =   -9 % 4; //sum equals -1
    sum =   9 % 4;  //sum equals -1
    sum =   -9 % -4;    //sum equals -1
    sum =   9 % -4; //sum equals -1
    

    如上所示,a % b的结果和b的符号没有关系,只与a的符号有关系。

    4. 复合分配操作符

    sum += 2 // 等同于 sum = sum + 2
    sum -= 2 // 等同于 sum = sum - 2
    sum *= 2 // 等同于 sum = sum * 2
    sum /= 2 // 等同于 sum = sum / 2
    

    注意:复合分配操作符没有返回值,let b = a += 2是错误的。

    5. 比较运算符

    • 等于(a == b)
    • 不等于(a != b)
    • 大于(a > b)
    • 小于(a < b)
    • 大于或等于(a >= b)
    • 小于或等于(a <= b)
    • Swift比较两个字符串是否完全相同时,可以直接使用(==),如:
    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个元素、且不包括Bool值元素的元祖;
    //当元祖中第一个元素已经得到比较结果时,就不在继续向下比较
    (1, "zebra") < (2, "apple")   // true because 1 is less than 2; "zebra" and "apple" are not compared
    (3, "apple") < (3, "bird")    // true because 3 is equal to 3, and "apple" is less than "bird"
    (4, "dog") == (4, "dog")      // true because 4 is equal to 4, and "dog" is equal to "dog"
    

    6. 三元条件运算符

    question ? answer1 : answer2,如果questiontrue,执行answer1;如果为false,执行answer2
    格式:

    question ? answer1 : answer2
    //等同于下面的写法
    if question {
        answer1
    } else {
        answer2
    }
    

    示例:

    let contentHeight = 40
    let hasHeader = true
    let rowHeight = contentHeight + (hasHeader ? 50 : 20)
    // rowHeight is equal to 90
    

    7. Nil合并运算符

    a ?? b,如果anil,返回b;如果a不为nil,返回a;
    格式:

    a ?? b
    //等同于以下代码
    a != nil ? a! : b
    

    示例:

    let defaultColorName = "red"
    var userDefinedColorName: String?   // defaults to nil
     
    var colorNameToUse = userDefinedColorName ?? defaultColorName
    // userDefinedColorName is nil, so colorNameToUse is set to the default of "red"
    

    8. 范围运算符

    • 闭合范围运算符
      (a...b)a不能大于b,运行范围在[a,b]之间;
    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
    
    • 半开范围运算符
      (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
    

    9. 逻辑运算符

    逻辑运算符修改或组合Bool逻辑值truefalse

    • 逻辑NOT(!a)
    • 逻辑AND(a && b)
    • 逻辑OR (a || b)

    注意:&&||是左关联,及从左向右运算,但!的优先级高于&&||

    参考链接

    用来记录平时遇到的问题,不对之处还望指教。

    相关文章

      网友评论

          本文标题:Swift3学习笔记:部分基础运算符

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