能在编译器推导出的模板类型部分,都可以省略实例类型部分
Control Flow
* switch case 匹配中的 range,也支持源于 String.index 的range
* where...,直接一个普通 var 变量使用即可.
* 参数默认是 let 不可变类型,不允许修改
Closures
* function type 不包含 label 部分 --> 传递function时,其label...部分会被自动忽略. --> 在绝大部分场景中,二者是兼容的.
* closure 可以省略参数类型,是因为类型推导机制的存在 --> 尾闭包,可以省略 ();
* 用作函数参数的闭包,如果想在函数外使用...Deinitialization
* 把变量置为 nil,即可触发 deinit.
* deinit 执行顺序: 子类 --> 父类.
* 不能在子类 deinit 中调用 super.deinit....* 类型方法调用,不允许使用自身作为 inout 参数传递给自己的某个方法.