Swift 笔记:基础运算符


Apple-Swift-logo

Swift 支持大部分标准 C 语言的运算符,且改进许多特性来减少常规编码错误。Swift 中赋值运算(=)不能返回值,以防止与判断相等运算符(==)混淆。

运算符分为一元、二元和三元运算符。一元运算符对单一对象操作,分前置运算符和后置运算符,运算符与操作对象间不能加空格,必须紧密相连;二元运算符操作两个对象,是中置的;Swift 三元运算符只有一个,即三目运算符 a ? b : c

赋值运算符

赋值运算符(a = b),表示用 b 的值来初始化或更新 a 的值。需要注意的是 Swift 的赋值不返回值,不能做如下的判断:

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

算术运算符

Swift 中所有数值类型都支持基本的四则算术运算和求余运算:

  • 加法(+)
  • 减法(-)
  • 乘法(*)
  • 除法(/)
  • 求余(%)

加法运算符也可用于 String 的拼接。

组合赋值运算符

Swift 也提供把其他运算符和赋值运算(=)组合的组合赋值运算符,组合加运算(+=)是其中一个例子:

var a = 1
a += 2
// a 现在是 3

表达式 a += 2 是 a = a + 2 的简写,一个组合加运算就是把加法运算和赋值运算组合成进一个运算符里,同时完成两个运算任务。

比较运算符

所有标准 C 语言中的比较运算符都可以在 Swift 中使用:

  • 等于:a == b
  • 不等于:a != b
  • 大于:a > b
  • 小于:a < b
  • 大于等于:a >= b
  • 小于等于:a <+ b

如果两个元组的元素相同,且长度相同的话,元组就可以被比较。比较元组大小会按照从左到右、逐值比较的方式,直到发现有两个值不等时停止。如果所有的值都相等,那么这一对元组我们就称它们是相等的。

三目运算符

三目运算符的特殊在于它是有三个操作数的运算符,它的形式是 问题 ? 答案 1 : 答案 2。它简洁地表达根据 问题 成立与否作出二选一的操作。如果 问题 成立,返回 答案 1 的结果;反之返回 答案 2 的结果。

let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight 现在是 90

空合运算符

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

区间运算符

  • 闭区间运算符(a…b):定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。
  • 前闭后开区间运算符(a..<b):定义一个从 a 到 b 但不包括 b 的区间。
  • 单侧区间:表达往一侧无限延伸的区间,可以省略掉区间操作符一侧的值。

逻辑运算符

  • 逻辑非:!a
  • 逻辑与:&&
  • 逻辑或:||
  • Swift 逻辑操作符 && 和 || 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。
  • 为了一个复杂表达式更容易读懂,在合适的地方使用括号来明确优先级是很有效的。

#EOF