Swift语言学习笔记
一、基本语法
1.注释
与C语言相同,但Swift 的多行注释可以嵌套在其他多行注释内部。

2.分号
Swift不像C语言一样频繁地使用分号,只有在同一行书写多条语句时,必须用分号隔开,不要求在每行结尾加分号。
3.关键字
3.1数据类型:
class: 定义一个类
enum: 定义一个枚举
struct: 定义一个结构体
protocol: 定义一个协议
typealias: 定义一个类型别名
var: 定义一个变量
let: 定义一个常量
func: 定义一个函数
3.2流程控制:
if: 条件语句
else: 条件语句的另一部分
switch: 多选择语句
case: switch 语句中的一个分支
for: for-loop,循环语句
in: for-loop 中用于区间或集合的遍历
while: while-loop,循环语句
repeat: do-while-loop 的开始部分
do: do-while 或 do-catch 的开始部分
break: 跳出循环或 switch 语句
continue: 跳过当前循环的其余部分,进行下一次循环
3.3 访问控制
public: 可以被任何地方访问
internal: 只能在当前模块内访问
fileprivate: 只能在当前文件内访问
private: 只能在当前声明里和扩展中访问
3.4 功能修饰词
static: 静态方法或属性
class: 类方法或属性(可以被子类重写的 static)
dynamic: 允许动态派发
final: 阻止子类重写
mutating: 允许值类型的方法修改其所属实例
nonmutating: 标记方法在改变值类型属性时不会改变它的状态
lazy: 延迟加载属性直到第一次被调用
optional: 表示协议中的方法或属性是可选的
3.5 错误处理
throw: 抛出一个错误
throws: 标记一个函数可能抛出错误
rethrows: 标记一个函数为仅当闭包参数抛出错误时才抛出错误
try: 调用可能抛出错误的函数
catch: 捕获并处理异常
3.6 泛型和类型
associatedtype: 定义一个协议的关联类型
where: 指定类型约束条件
Any: 表示任意类型
Self: 表示类型本身
引入
在Swift 中可以使用"\()"以引入其他量,也可以用"+"号进行输出语句的拼接。
二、数据类型
1.整型数据
Swift语言中的整型数据分为有符号整型数据与无符号整型数据。有无符号通俗来理解即为分正负符号与不分正负符号。
对于无符号整型,Swift中提供了5种类型4种储存空间的数据类型,4种储存空间分别占用内存8位、16位、32位、64位。

有符号整型数据与无符号整型数据十分类似,只是其首位二进制位位符号位,不纳入数值计算。

2.浮点型数据
浮点型数据用来表示一些小数,浮点型数据分为单精度浮点型和双精度浮点型,分别用 Float 与 Double 表示。

Swift语言支持使用科学计数法来表示数字,在十进制中,使用e来表示10的n次方;在十六进制中,使用p来表示2的n次方。

3.布尔型数据
布尔型数据很多时候也叫做逻辑类型,Swift语言与Objective-C语言不同,在Swift语言中的Bool类型十分严格,只有true和false两种值,分别表示真和假。在Swift语言的条件语句以及需要逻辑判断的语句中,所使用的条件表达式的值也必须为Bool类型。
创建真与假的Bool类型。

4.两种特殊数据类型
4.1元组
swift提供了元组:多个值组合成一个复合值。
元组内的值可以是任意类型,并不要求是相同类型。有了元组,函数的返回值就可以返回多个不同类型的值。

注意:元组虽然使用起来十分方便,但是其只适用于简单数据的组合,对于结构复杂的数据,要采用结构体或者类来实现。
4.2可选值类型
可选值类型(Optional类型)是Swift语言特有的一种类型。
Optional 实际上就是一个枚举。可选值是Swift中重要的基础类型之一,所以有更加简洁的语法来表示。例如:Optional<Int>可以写成Int?因为可选值遵守ExpressibleByNilLiteral协议,所以可以用 nil 代替.none。
Optional类型实例解包操作

在使用“!”进行Optional值的解包操作时,必须保证要解包的值不为nil,否则程序运行会出错。可以在拆包前使用if语句进行安全判断,例子如下:

三.常量和变量
swift用let定义常量,用var定义变量。对于数据类型则swift自行推断(类型推倒在C++中相当于auto这个类型占位符一样)。常量在设定后,将不能再更改它的值,变量则可以。
常量和变量名可以包含几乎所有的字符,包括 Unicode 字符
注意:
在实际项目开发中,应该先定义为let类型,如果需要修改时,再修改类型为var
let指的是指向的地址不可修改,但是该对象内容是可修改的(常量不可修改)
四、可选类型
为了让程序更安全!
为了保证str不是nil,在赋值时确定一下。swift提供了可选类型,来处理可能缺失的情况。注意可选类型是一个类型。

构造器返回值可选值类型
使用if或者while可以进行判断是否有值。这个过程又叫做可选绑定

注意:
解包符号为 !如果确定一个可选类型的值一定存在,那么我们使用 !进行解包来获取它的值,或者使用 Optional Binding 来处理。
可以把“隐式解包可选类型”当成对每次使用的时候自动解包的可选类型。隐式解包不是每次使用的时候 在变量/常量后面加 !,而是直接在定义的时候加 !。
强制解包过程中一旦解包失败,就会引起崩溃,安全的解包行为应该是通过if let 或者guard let,这种被称为可选绑
五、字面量
所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。
5.1字符串型字面量
字符串型字面量由被包在双引号中的一串字符组成,形式如下:

字符串型字面量中不能包含未转义的双引号 (")、未转义的反斜线(\)、回车符或换行符。

六、运算符
6.1赋值运算符
赋值运算符应该是在编程中出现频率最高的运算符之一,在对任何量值进行赋值时,都需要使用到赋值运算符“=”。与C语言相同,“=”并不是相等运算符,相等运算符为“==”。

6.2基本算术运算符
基本算数运算符用于进行一些基本的数学运算,例如加、减、乘、除等。Swift语言从2.2版本之后,删除了自增运算符“++”和自减运算符“- -”,目前版本的Swift语言中不可以使用这两个运算符。

6.3比较运算符
Swit中的比较运算符用于两个操作数之间的比较运算,其会返回一个Bool类型的逻辑值。基本的比较运算符有:等于比较运算符“—”、小于比较运算符“<”、大于比较运算符“>”、不等于比较运算符“上=”、小于等于比较运算符“<”以及大于等于比较运算符“>-”。

6.4两种特殊的运算符
6.4.1空合运算符
如果 a 包含一个值就进行解包,否则就返回一个默认值 b

6.4.2区间运算符
Swift 提供了几种方便表达一个区间的值的“区间运算符”。
闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。
半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。
单侧区间运算符(a.../...b)可以表达往一侧无限延伸的区间
七、条件语句
在 Swift 中,条件语句用于根据特定条件执行不同的代码块。Swift 提供了 if、guard、switch 等条件语句来实现不同的条件逻辑。
7.1if语句
if 语句用于根据条件执行代码块。

7.2guard语句
guard 语句用于在条件不满足时退出当前作用域。通常与 else 配合使用。

7.3switch语句
switch 语句用于根据不同的情况执行对应的代码块。

八、Xcode的使用
Creat New Project(新项目)或点击右栏(从文件夹打开旧项目)

最上方栏目选择 macOS

在 Application 中选择 Command Line Tool

命名文件以及选择语言类型(Swift、Objective-C、C++、C)

选择新建文件夹或者要放入的文件夹
输入代码
左上角三角符号运行

更多推荐


所有评论(0)