Optional
查看sil发现Optional的本质是一个enum,里面有none和some这两个case
解包
- 强制解包
遇到值为nil时强制解包会崩溃,不建议使用
- if let
可选项绑定
- guard let
当条件为false时才会进入到guard,并且,temp在guard的作用域外也可以调用
实际开发时尽量使用if let 和 guard let
Equatable
通过遵循Equatable协议来判断两者之间是否相等
直接有了==运算符,在swift中好多都默认遵守了Equatable协议
上图中自定义了一个结构体,但并没有遵守Equatable所以使用不了==运算符
- 结构体遵守Equatable
遵守Equatable后可以
- 类遵守Equatable
需要自己手动实现Equatable的协议方法
关键字
- private
仅在当前作用域内有效,通常用作写单例时不向外部提供初始化方法
- fileprivate 仅在当前定义的源文件中能访问到
- Internal 默认访问级别。允许模块中的任意文件访问(模块外不支持访问) (import的都是模块)
- public 开放式访问,允许任何模块的任何文件访问,但只支持定义模块内继承和子类重写
- open 开放式访问,最不受限制,允许任何模块的任何文件访问、继承和子类重写