【笔记】Swift学习笔记

前言

Swift编程语言,支持多编程范式和编译式,用来撰写基于macOS/OS X、iOS、iPadOS、watchOS、tvOS和visionOS的软件。(维基百科

初始化方法

  • 在程序启动后会立即执行
app/ViewController.swift
1
2
3
4
5
6
override func viewDidLoad() {
super.viewDidLoad()

...

}

注释

1
// 单行注释
1
/* 多行注释 */

输出语句

1
print("文本内容")

格式化输出(格式说明符)

  • 保留两位小数
1
String(format: "文本内容%d", 1) // "文本内容1"

格式化输出(模板字符串)

  • 通过\()在字符串中插入变量值
1
print("字符串 \(1)") // "文本内容1"

变量

声明变量

1
var 变量名: 数据类型
1
var 变量名: [数组内存放的数据的数据类型]

定义变量

1
var 变量名: 数据类型 =
  • 自动类型推导
1
var 变量名 =

变量赋值

1
变量名 =

常量

定义常量

1
let 常量名: 数据类型 =
  • 自动类型推导
1
let 常量名 =

数据类型

类型 描述
Int 整型型
Float 单精度浮点型
Double 双精度浮点型
Bool 布尔型
String 字符串型
Array 数组
Dictionary 字典
1
2
3
4
5
6
7
8
9
10
11
12
13
var a: Int = 0

var b: Float = 0F

var c: Double = 0

var d: Bool = false

var e: String = ""

var f: Array<Int> = [1, 2]

var g: Dictionary<Int, Int> = [1: 0, 2: 0]

安全检查(Optional)

定义允许为空的变量

  • 如果变量的值允许为空,则需要在数据类型的末尾使用?标记
1
var 变量名 数据类型? = nil

使用允许为空的变量

强制使用

  • 如果使用这个变量的时候,确信这个变量的值不为空,则需要在变量名的末尾使用!标记来强制使用这个变量
1
var 变量名: 数据类型 = 允许为空的变量名!

非空判断

  • 进行安全检查后使用允许为空的变量
1
2
3
if 允许为空的变量名 != nil {
var 变量名: 数据类型 = 允许为空的变量名!
}

赋值判断

  • 先在分之语句中将允许为空的变量赋值给一个新的变量,只有新的变量不为空值时才会进入代码块内,然后在分之语句的代码块内使用新的变量
1
2
3
if let 一定不为空的变量名 = 允许为空的变量名! {
var 变量名: 数据类型 = 一定不为空的变量名
}

指定空值的默认值

1
var 变量名: 数据类型 = 允许为空的变量名 ?? 默认值

非空才会执行

非空才会调用的属性
1
变量名?.属性名
非空才会调用的函数
1
变量名?.函数名()

运算符

算术运算符

  • +(正号)、-(负号)
  • +(加号)、-(减号)、*/%

关系运算符

  • ><>=<===!=

逻辑运算符

  • &&||!

赋值运算

  • =+=-=*=/=%=
  • &=|=^=<<=>>=

赋值运算符两边,要么都加空格,要么都不加空格,不要出现一侧加空格一侧不加空格的情况,否则会报错

1
变量名=
1
变量名 =

按位运算符

  • &|^~<<>>

区间运算符

  • ..<...

分支语句

if语句

1
2
3
if 布尔表达式 {
布尔表达式成立时执行的代码
}
1
2
3
4
5
if 布尔表达式 {
布尔表达式成立时执行的代码
} else {
布尔表达式不成立时执行的代码
}
1
2
3
4
5
6
7
if 布尔表达式1 {
布尔表达式1成立时执行的代码
} else if 布尔表达式2 {
布尔表达式2成立时执行的代码
} else {
以上布尔表达式都不成立时执行的代码
}
1
2
3
4
5
if 布尔表达式1 {
if 布尔表达式2 {
布尔表达式12都成立时执行的代码
}
}
1
2
3
if 布尔表达式1, 布尔表达式2 {
布尔表达式12都成立时执行的代码
}

switch语句

  • Swift语言的switch语句不具有穿透行为,在每个case语句中,无需使用break跳出seitch语句
1
2
3
4
5
6
7
8
switch 变量名 {
case1:
变量值为值1时执行的代码
case2:
变量值为值2时执行的代码
default:
变量值不为以上任何值时执行的代码
}
  • 如果需要强制穿透行为,需要在case语句结束后用fallthrough关键字
1
2
3
4
5
6
switch 变量名 {
case1:
变量值为值1时执行的代码
fallthrough
case2:
变量值为值2时执行的代码
  • Swift语言的switch语句支持区间匹配
1
2
3
4
5
6
7
8
9
10
switch 变量 {
case 1...2:
变量在区间[1,2]时执行的语句
case 1..<2:
变量在区间[1,2)时执行的语句
case ...1:
变量在区间(,1)时执行的语句
default:
变量不在以上任何区间时执行的语句
}

循环语句

while语句

1
2
3
while 布尔表达式 {
布尔表达式成立时反复执行的代码
}

repeat…while语句

1
2
3
repeat {
布尔表达式成立时反复执行的代码
} while 布尔表达式

for…in语句

1
2
3
for 元素 in 可迭代对象 {
...
}

break关键字

  • 跳出循环
1
2
3
while true {
break
}

continue跳出当前循环

  • 结束当前循环,开始下一次循环
1
2
3
while true {
continue
}

三元运算

1
var 变量名: 数据类型 = 布尔表达式 ? 布尔表达式成立时返回的结果 : 布尔表达式不成立时返回的结果

完成

参考文献

哔哩哔哩——疯狂滴小黑