PART_A 运算符
- 赋值运算符:
=
- 普通赋值
var num
num = 5
- 元组赋值
let (x, y) = (0, 0)
-
=
操作不返回任何值
- 算数、组合赋值、自增自减、、负号、字符串拼接
- 求余时符号只看左边,可对浮点数求余
let a = 3, b = 4
// 算数运算
var c = 0
c = a + b
c = a - b
c = a * b
c = a / b
c = a % b
// 组合赋值运算
c += a
c -= a
c *= a
c /= a
c %= a
// 自增自减运算
c++ // 先自增,再返回值
c--
++c // 先返回值,再自增
--c
// 负号
-c
// 字符串拼接
String str = "hello " + "world"
- 比较运算符
let a = 3, b = 4
a == b
a != b
a > b
a >= b
a < b
a <= b
-
? :
三目运算符
let num = 3
num == 5 ? "yes" : "no"
-
??
空合运算符
- 判断a,若为空则返回b值,若不为空解封并返回a值
- a必须是Optional类型
- b的存储值类型必须和a一致
var a:Int?, b = 5
a ?? b
a != nil ? a! : b
- 区间运算符
-
a ... b
闭区间
- b必须大于a
- 半开区间:
a ..< b
或者 a >.. b
- 数组遍历时:
0 ..< strArr.count
for x in 1 ... 9 {
for var y = 1; y <= x; y++ {
print("\(y) * \(x) = \(x * y)", terminator:"\t")
// 字符串插值:通过\()来插入实际值
// \()中不能包含非转义\、回车、换行符
}
print()
}
- 逻辑运算
- 非:
!a
- 与(短路):
a && b
- 或(短路):
a || b
- 推荐使用
()
来明确优先级
PART_B 字符串
字符串是值类型
- 初始化空字符串(两种方式等价)
-
var str = ""
-
var str = String()
- 判空
-
str.isEmpty
- 拼接
-
var str = "hi " + "catface"
var str = "hello"
let c : Character = "!"
str.append(c) // str = "hello!"
- 字符
Character
- 初始化:
let c : Character = "!"
- 字符数组构造字符串
let characters : [Character] = ["c", "a", "t", "