Swift中的基本运算符

Swift支持大多数标准C运算符,并改进了一些功能来消除常见的编码错误。 赋值运算符( = )不返回值,以防止在打算使用等于运算符( == )时错误地使用它。

Swift还提供了C中找不到的范围运算符,例如a..<ba..b作为表示值范围的快捷方式。

术语

运算符是一元,二进制或三元运算符:
元运算符:一元运算符对单个目标(例如-a, !b, c! )进行操作。
二进制:二进制运算符可对两个目标(例如2 + 3 )进行操作。
三元运算符三元运算符针对三个目标进行操作。 与C一样,Swift也只有一个三元运算符,即三元条件运算符( a ? b : c )。

赋值运算符

那作业 运算符( a = b )使用a = b的值初始化或更新a的值:

 令b = 10 
变量a = 5
a = b
// a is now equal to 10
 令(x,y)=(1,2) 
// x等于1,y等于2

与C和Objective-C中的赋值运算符不同,Swift中的赋值运算符本身并不返回值

 如果x = y { 
//这是无效的,因为x = y不返回值。
}

算术运算符

Swift支持所有数字类型的四个标准算术运算符
1.加法(+)
2.减法(-)
3.乘法(*)
4.除法(/)

 1. 1 + 2 // equals 3 
 2. 5 - 3 // equals 2 
 3. 2 * 3 // equals 6 
 4. 10.0 / 2.5 // equals 4.0 

与C和Objective-C中的算术运算符不同,Swift算术运算符默认情况下不允许值溢出(例如a &+ b

余数运算符

余数运算符( a % b )算出b将适合b多少个倍数,并返回剩下的值称为余数。
这是余数运算符的工作原理,要计算9 % 4 ,您首先需要确定9内可容纳多少4s 。 您可以在9内放入两个4s ,其余为1

  9%4 //等于1 

复合分配运算符

像C一样,Swift提供复合赋值运算符 ,将赋值( = )与另一个操作结合在一起。

  var a = 1 
一个+ = 2
// a现在等于3

比较运算符

Swift支持所有标准C比较运算符:
1.等于( a == b
2.不等于( a != b
3.大于( a > b
4.小于( a < b
5.大于或等于( a >= b
6.小于或等于( a <= b

 1. == 1 // true because 1 is equal to 1 
2. != 1 // true because 2 is not equal to 1
3. 2 > 1 // true because 2 is greater than 1
4. 1 < 2 // true because 1 is less than 2
5. 1 >= 1 // true because 1 is greater than or equal to 1
6. 2 <= 1 // false because 2 is not less than or equal to 1

从左到右比较元组,一次比较一个值,直到比较发现两个不相等的值。 比较这两个值,比较结果确定元组比较的整体结果。 如果所有相等,则元组本身相等。

  (1,“斑马”)<(2,“苹果”) 
//是的,因为1小于2,所以不比较斑马和苹果。
  (3,“苹果”)<(3,“鸟”) 
//是的,因为3等于3并且苹果小于鸟。
  (4,“ dog”)<(4,“ dog”) 
//是的,因为4等于4并且dog等于dog。

三元条件运算符

它是由三部分组成的特殊运算符,其形式为问题? 答案1:答案2。
三元条件运算符是以下代码的简写:

 如果有问题{ 
回答1
}其他{
回答2
}

零销售员

如果nil-coalescing运算符( a ?? b )包含一个值,则解开可选a b如果anil ,则返回默认值b 。 表达式a始终是可选类型。 表达式b必须匹配存储在a内的类型。

nil-coalescing运算符是以下代码的简写:

 一个!= nil? 一种!  :b 

下面的示例使用nil-coalescing运算符在默认颜色名称和可选的用户定义颜色名称之间进行选择:

 让颜色=“红色” 
让名字:字符串?
  var colorName =名称?? 颜色 
//名称为nil,因此colorName设置为默认值red

范围运算符

Swift包含多个range运算符 ,它们是表示一系列值的快捷方式。

近距离运算符:
封闭范围运算符( a...b )定义了从ab的范围,并包括值a和b。 a的值不能大于b
在要使用所有值的范围内进行迭代时,例如使用forin循环,封闭范围运算符很有用:

 for index in 1...5 { 
print("\(index)")
}
// 1
// 2
// 3
// 4
// 5

半开范围运算符:
半开范围运算符( a..<b )定义从ab的范围,但不包括b 。 据说它是半开的,因为它包含其第一个值,但不包含其最终值。

 令arr = [1,2,3,4] 
对于0中的i .. <arr.count {
打印(arr [i])
}
// 1
// 2
// 3
// 4

单面范围:
封闭范围运算符具有一种替代形式,用于在一个方向上尽可能连续的范围。

 命名= [A,B,C,D] 
 以名称命名[2 ...] { 
打印(名称)
}
  // C 
// D
 以名称命名[... 2] { 
打印(名称)
}
  // 一种 
// B
// C
 名称中的名称[.. <2] { 
打印(名称)
}
  // 一种 
// B
 让范围= ... 5 
range.contains(7)//否
range.contains(5)//是
range.contains(-1)//否

逻辑运算符

逻辑运算符修改或组合布尔逻辑值truefalse 。 Swift支持基于C语言的三种标准逻辑运算符:

1.逻辑非( !a
2.逻辑AND( a && b
3.逻辑或( a || b

逻辑非运算符:
逻辑NOT运算符!a )反转布尔值,以便true变为false ,并且false变为true

 让标志=假 
如果!flag {
打印(“拒绝访问”)
}
  //打印访问被拒绝 

逻辑与运算符

逻辑AND运算符( a && b )创建逻辑表达式,其中两个值都必须为true才能使整体表达式也为true

如果任何一个值为false ,则整个表达式也将为false 。 实际上,如果第一个值是false ,那么第二个值甚至都不会被求值,因为它不可能使整个表达式等于true 。 这被称为短路评估

本示例考虑两个Bool值,并且仅在两个值均为true时才允许访问:

 让a = true 
令b =假
 如果a && b { 
打印(“欢迎”)
}其他{
打印(“拒绝访问”)
}
  //打印访问被拒绝 

逻辑或运算符

您可以使用它来创建逻辑表达式,其中两个值中的一个必须为true才能使整个表达式为true

与上面的逻辑AND运算符类似,逻辑OR运算符使用短路评估来考虑其表达式。 如果Logical OR表达式的左侧为true ,则不评估右侧,因为它不能更改整个表达式的结果。

 让a = false 
令b = true
 如果||  b { 
打印(“欢迎”)
}其他{
打印(“拒绝访问”)
}
  //打印欢迎