基本运算符
术语
运算符有一元、二元、三元运算符。
受运算符影响的值叫做操作数。
赋值运算符
let b = 10
var a = 5
a = b
// a现在等于10
如果赋值的右边是一个多元组,它的元素可以马上被分解多个常量或变量:
let (x,y) = (1,2)
// 现在x等于1,y等于2
与C语言和Objective-C不同,Swift的赋值操作并不返回任何值。所以以下代码是错误的:
if x = y {
//此句错误,因为x = y并不返回任何值
}
算术运算符
1 + 2 //等于3
5 - 3 //等于2
2 * 3 //等于6
10.0 / 2.5 //等于4.0
加法运算符也可用于String的拼接:
"hello," + "world" //等于 "hello,world"
求余运算符
9 % 4 //等于1
-9 % 4 //等于-1
浮点数求余计算
8 % 2.5 //等于0.5
自增和字减运算
var i = 0
++i //现在 i = 1
- 当
++
前置的时候,先自增再返回。 - 当
++
后置的时候,先返回再自增。
var a = 0
let b = ++a //a 和 b 现在都是1
let c = a++ //a 现在是2,但 c 是 a 自增前的值1
一元负号运算符
let three = 3
let minusThree = -three //minusThree 等于 -3
let plusThree = -minusThree //plus等于3
一元正号运算符
let minusSix = -6
let alsoMinusSix = +minusSix //alsoMinusSix等于-6
组合赋值运算符
var a = 1
a += 2 //a现在是3
比较运算符
- 等于 (a == b)
- 不等于 (a != b)
- 大于 (a > b)
- 小于 (a < b)
- 大于等于 (a >= b)
- 小于等于 (a <= b)
比较运算符多用于条件语句,如if
条件:
let name = "world"
if name == "world" {
println("hello,world")
} else {
println("I'm sorry \(name),but I don't recognize you")
}
// 输出 "hello,world"
三目运算符
三目运算符是以下代码的缩写形式:
if question { answer1 } else { answer2 }
一个计算表格行高的例子:如果有表头,那行高应比内容高度高出50像素;如果没有表头,只需高出20像素。
let contentHeight = 40
let hasHeader = true
let rowHeight = contentHeight + (hasHeader ? 50 : 20)
// rowHeight现在是90
空合并运算符
空合并运算符(a ?? b
)将对可选类型a
进行空判断,如果a
包含一个值就进行解封,否则就返回一个默认值b
。
这个运算符有两个条件:
a != nil ? a! : b
区间运算符
闭区间运算符
闭区间运算符(a...b
)定义一个包含从a到b的所有值得区间,b必须大于a。闭区间运算符在迭代一个区间的所有值时非常有用。
for index in 1...5 {
println("\(index) * 5 = \(index * 5)")
}
//1 * 5 = 5
//2 * 5 = 10
//3 * 5 = 15
//4 * 5 = 50
//5 * 5 = 25
半开区间运算符
半开区间(a..<b
)定义一个从a到b但不包括b的区间。
let names = ["Anna","Alex","Brian","Jack"]
let count = names.count
for i in 0..<count {
println("第\(i + 1)个人叫\(names[i])")
}
//第1个人叫Anna
//第2个人叫Alex
//第3个人叫Brian
//第4个人叫Jack
逻辑运算符
逻辑运算的操作对象是逻辑布尔值。Swift支持三个标准逻辑运算。
- 逻辑非(
!a
) - 逻辑与(
a && b
) - 逻辑或(
a || b
)