Swift中的基本运算符
Swift支持大多数标准C运算符,并改进了一些功能来消除常见的编码错误。 赋值运算符( =
)不返回值,以防止在打算使用等于运算符( ==
)时错误地使用它。
Swift还提供了C中找不到的范围运算符,例如a..<b
和a..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
如果a
为nil
,则返回默认值b
。 表达式a
始终是可选类型。 表达式b
必须匹配存储在a
内的类型。
nil-coalescing运算符是以下代码的简写:
一个!= nil? 一种! :b
下面的示例使用nil-coalescing运算符在默认颜色名称和可选的用户定义颜色名称之间进行选择:
让颜色=“红色”
让名字:字符串?
var colorName =名称?? 颜色
//名称为nil,因此colorName设置为默认值red
范围运算符
Swift包含多个range运算符 ,它们是表示一系列值的快捷方式。
近距离运算符:
封闭范围运算符( a...b
)定义了从a
到b
的范围,并包括值a和b。 a的值不能大于b
。
在要使用所有值的范围内进行迭代时,例如使用for
– in
循环,封闭范围运算符很有用:
for index in 1...5 {
print("\(index)")
}
// 1
// 2
// 3
// 4
// 5
半开范围运算符:
半开范围运算符( a..<b
)定义从a
到b
的范围,但不包括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)//否
逻辑运算符
逻辑运算符修改或组合布尔逻辑值true
和false
。 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 {
打印(“欢迎”)
}其他{
打印(“拒绝访问”)
}
//打印欢迎