基本运算符

基本运算符

本页内容包括:

<a name="术语"></a>术语

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

  • 一元运算符对单一操作对象操作(如-a)。一元运算符分前置运算符和后置运算符,前置运算符需紧排操作对象之前(如!b),后置运算符需紧跟操作对象之后(如i++)。
  • 二元运算符操作两个操作对象(如2 + 3),是中置的,因为它们出现在两个操作对象之间。
  • 三元运算符操作三个操作对象,和 C 语言一样,Swift 只有一个三元运算符,就是三目运算符(a ? b : c)

<a name="赋值运算符"></a>赋值运算符

赋值运算(a = b),表示用b的值来初始化或更新a的值:

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

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

<a name="算数运算符"></a>算数运算符

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

  • 加法(+
  • 减法(-
  • 乘法(*
  • 除法(/

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

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

求余运算符

求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。

浮点数求余计算

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

8 % 2.5 // 等于 0.5

自增和自减运算

和 C 语言一样,Swift 也提供了对变量本身加1或减1的自增(++)和自减(--)的缩略算符。其操作对象可以是整形和浮点型。 ‌

  • ++前置的时候,先自増再返回。
  • ++后置的时候,先返回再自增。

<a name="组合赋值运算符"></a>组合赋值运算符

如同强大的 C 语言,Swift 也提供把其他运算符和赋值运算(=)组合的复合赋值运算符,组合加运算(+=)是其中一个例子:

<a name="比较运算符"></a>比较运算符

所有标准 C 语言中的比较运算都可以在 Swift 中使用,每个比较运算都返回了一个标识表达式是否成立的布尔值.

  • 等于(a == b
  • 不等于 (a != b)
  • 大于(a > b)
  • 小于(a < b
  • 大于等于(a >= b
  • 小于等于(a <= b

Swift 也提供恒等===和不恒等!==这两个比较符来判断两个对象是否引用同一个对象实例。

<a name="三目运算符"></a>三目运算符

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

<a name="空和运算符"></a>空和运算符

空合运算符(a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b.这个运算符有两个条件:

  • 表达式a必须是Optional类型
  • 默认值b的类型必须要和a存储值的类型保持一致

空合并运算符是对以下代码的简短表达方法

a != nil ? a! : b

<a name="区间运算符"></a>区间运算符

闭区间运算符

闭区间运算符(a...b)定义一个包含从ab(包括ab)的所有值的区间,b必须大于a。 ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中.

for index in 1...5 {
    println("\(index) * 5 = \(index * 5)")
}

半开区间运算符

半开区间(a..<b)定义一个从ab但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。

<a name="逻辑运算符"></a>逻辑运算符

逻辑运算的操作对象是逻辑布尔值。Swift 支持基于 C 语言的三个标准逻辑运算。

  • 逻辑非(!a
  • 逻辑与(a && b
  • 逻辑或(a || b
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容