0. 开源地址
- https://github.com/apple/swift
- https://github.com/apple/swift-llvm
- https://github.com/apple/swift-clang
- https://github.com/apple/swift-lldb
- https://github.com/apple/swift-cmark
- https://github.com/apple/swift-llbuild
- https://github.com/apple/swift-package-manager
- https://github.com/apple/swift-corelibs-xctest
- https://github.com/apple/swift-corelibs-foundation
1. 数据类型 / 运算符
-
无论常变量一律小写开头,与基本库一致
-
let 不可变, var 可变,类型推断
-
基本类型 ??都是结构体/枚举/类,在Swift标准库中定义了多达102个结构体而类只有5个
1.0 数值 Int Float Bool
1.1 String
1.2 集合 Array<T>, Dictionary<K : V>
1.3 可选值: 其实是枚举 Optional<T> - 可选链 -if let 语法
1.4 元组 - 下划线
1.5 闭包/函数
参数 : 可变参数 缺省参数
返回值 : 多返回值
1.6 类型转换/convertable
1.7 类型别名
1.8 运算符(其实是函数)/复写(全局函数)
2. 逻辑语句
-
for/while ... ..< list.enumerate
-
if/guard
-
switch
3. 类/结构体
-
共同点
3.1 属性
前缀: lazy weak
3.2 方法
3.3 下标
3.4 构造过程
-
不同点
3.5 继承
3.6 动态性 is as
3.7 析构
3.8 引用计数
4. 扩展/协议
-
Equatable Comparable
5. 范型约束 <T>
- 用途
- is as
- Any、AnyObject、AnyClass有什么区别
- where
6. 反射/动态性
- Mirror
7. 错误处理
enum Error: ErrorType {
case NotExist
case OutOfRange(range : Int)
}
func canThrowAnError() throws {
// 这个函数有可能抛出错误
}
do {
try makeASandwich()
eatASandwich()
} catch Error.NotExist {
washDishes()
} catch Error.OutOfRange(let range) {
buyGroceries(ingredients)
}
8. 函数式编程
- filter map reduce
9. 常用实践
访问控制 private public
协议的方法另起一个扩展
单例
class SingletonClass {
static let sharedInstance = SingletonClass()
private init() {} // 私有构造方法
}