美文网首页
Swift基础之基本运算符

Swift基础之基本运算符

作者: 逐水而上 | 来源:发表于2016-07-14 14:53 被阅读125次
    很基础的东西,只看没见过的

    区别于 C 语言,在 Swift 中你可以对浮点数进行取余运算(%),Swift 还提供了 C 语言没有的表达两数之间的值的区间运算符(a..<b 和 a...b),这方便我们表达一个区间内的数值
    如果赋值的右边是一个多元组,它的元素可以马上被分解成多个常量或变量:

    let (x, y) = (1, 2)
    // 现在 x 等于 1,y 等于 2
    

    与 C 语言和 Objective-C 不同,Swift 的赋值操作并不返回任何值,所以以下代码是错误的:

    if x = y {
        // 此句错误, 因为 x = y 并不返回任何值
    }
    

    与 C 语言和 Objective-C 不同的是,Swift 默认情况下不允许在数值运算中出现溢出情况。但是你可以使用 Swift 的溢出运算符来实现溢出运算(如 a &+ b)。
    加法运算符也可用于 String 的拼接:

    "hello, " + "world"  // 等于 "hello, world"
    

    不同于 C 语言和 Objective-C,Swift 中是可以对浮点数进行求余的。

    注意:
    复合赋值运算没有返回值,let b = a += 2这类代码是错误。这不同于上面提到的自增和自减运算符。
    注意: Swift 也提供恒等(===)和不恒等(!==)这两个比较符来判断两个对象是否引用同一个对象实例。更多细节在类与结构。

    当元组中的值可以比较时,你也可以使用这些运算符来比较它们的大小。例如,因为 Int 和 String 类型的值可以比较,所以类型为 (Int, String) 的元组也可以被比较。相反,Bool 不能被比较,也意味着存有布尔类型的元组不能被比较。
    比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。例如:

    (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
    

    注意: Swift 标准库只能比较七个以内元素的元组比较函数。如果你的元组元素超过七个时,你需要自己实现比较运算符。

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

    a != nil ? a! : b
    let defaultColorName = "red"
    var userDefinedColorName: String?   //默认值为 nil
    var colorNameToUse = userDefinedColorName ?? defaultColorName
    // userDefinedColorName 的值为空,所以 colorNameToUse 的值为 "red"
    

    闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。 ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的
    半开区间(a..<b)定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。

    相关文章

      网友评论

          本文标题:Swift基础之基本运算符

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