【Swift基础】Swift 4.0学习笔记
The Swift Programming Language 4.0 中文版学习笔记 1 1. 基础部分注释嵌套注释: 常量和变量常量和变量名可以使用Unicode字符来命名,但不能包含数学符号,箭头,保留的(或者非法的)Unicode码位,连线与制表符。也不能以数字开头。 常量和变量一旦声明为确定的类型,即不能改变其存储的值的类型。同时,常量和变量不能互转。 数字除非需要特定长度的整数,一般来说使用 尽量不要使用
类型推断数字类字面量可由编译器推断类型,而数字类常量和变量必须显式转换为其他类型。 类型别名类型别名 元组可以把任何顺序的类型组合成一个元组,这个元组可以包含所有类型。 可以将一个元组的内容分解为单独的常量和变量。如果只需要一部分元组值,分解的时候可以把要忽略的部分用下划线( 定义元组的时候,可以给单个元素命名。 let http200Status = (statusCode: 200,description: “OK")
print(“status code: (http200Status.statusCode),description: (http200Status.1)”)
let (justTheStatusCode,_) = http200Status
可选类型可选类型可以暗示任意类型的值缺失,并不需要一个如Objective-C中的 可以给可选变量赋值为 Swift的 可选绑定使用可选绑定(optional binding)来判断可选类型是否包含值,如果包含值就把值赋值给一个临时常量/变量。可选绑定可以用在 注意:在 隐式解析可选类型有时在程序架构中,第一次赋值之后可以确定一个可选类型总会有值。这种情况下,每次都要判断和解析可选类型是非常低效的。这种类型的可选状态被定义为隐式解析可选类型(implicitly unwrapped optionals)。把想要用做可选类型的后面的问号( 注意:只在确定一个变量不可能变为 2. 基本运算空合运算符(Nil Coalescing Operator)空合运算符( 区间运算符(Range Operators)a…b // 闭区间运算符
a..<b // 半开区间运算符
array[2…] // 单侧区间1
array[…2] // 单侧区间2
3. 字符串和字符多行字符串字面量由一对三个双引号 关闭引号当前行之前的空白字符串告诉Swift编译器其他各行多少空白字符串需要忽略。 字符串是值类型Swift的 连接字符串和字符字符串支持的运算符包括 字符串插值字符串插值是构建新字符串的方式之一,可以包含常量、变量、字面量和表达式。 4. 集合类型(Collection Types)Swift语言提供 集合的可变性如果集合赋值给一个变量,则这个集合是可变的;否则分配给一个常量,则是不可变的。 数组(Array)数组
集合(Set)你可以高效地完成 字典(Dictionary)通过访问 5. 控制流Swift提供了多种流程控制结构,包括可以多次执行任务的while/(repeat-while)循环,基于特定条件选择执行不同代码分支的if、guard和switch语句,还有控制流程跳转到其他代码位置的break和continue语句。 Switch区间匹配case 分支的模式也可以是一个值的区间。 元组我们可以使用元组在同一个switch语句中测试多个值。元组中的元素可以是值,也可以是区间。另外,使用下划线(_)来匹配所有可能的值。 值绑定(Value Bindings)case 分支允许将匹配的值声明为临时常量或变量,并且在case分支体内使用 —— 这种行为被称为值绑定(value binding)。 case 分支的模式可以使用where语句来判断额外的条件。 复合匹配当多个条件可以使用同一种方法来处理时,可以将这几种可能放在同一个case后面,并且用逗号隔开。 控制转移语句控制转移语句改变代码的执行顺序,通过它可以实现代码的跳转。 Swift有五种控制转移语句:
在 Swift 里,switch语句不会从上一个 case 分支跳转到下一个 case 分支中。 相比之下,C 语言要求你显式地插入break语句到每个 case 分支的末尾来阻止自动落入到下一个 case 分支中。 如果你确实需要 C 风格的贯穿的特性,你可以在每个需要该特性的 case 分支中使用fallthrough关键字。 可以使用标签(statement label)来标记一个循环体或者条件语句,对于一个条件语句,你可以使用break加标签的方式,来结束这个被标记的语句。对于一个循环语句,你可以使用break或者continue加标签,来结束或者继续这条被标记语句的执行。 例如,针对循环体的标签: label name: while condition { statements }
提前退出像 guard let/var condition else {
return // break/continue/throw/fatalError()
}
相比于可以实现同样功能的if语句,按需使用 检测API可用性if #available(platform name version,...,*) {
APIs 可用,语句将执行
} else {
APIs 不可用,语句将不执行
}
6. 函数(Functions)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |