-
通过变量来进行存储,通过变量名来关联值
-
高阶类型:元组
-
用可选值来处理值缺失的情况
-
数值型字面量
let binaryInteger = 0b10001 // 二进制的17 let octalInteger = 0o21 // 八进制的17 let hexadecimalInteger = 0x11 // 十六进制的17 let decimalDouble = 12.1875 // 都是 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0 let paddedDouble = 000123.456 // 添加额外的零和下滑线不会影响值 let oneMillion = 1_000_000 let justOverOneMillion = 1_000_000.000_000_1
-
可选值
-
除了对象类型,基本C类型、结构体、枚举也可以 = nil
-
与OC不同,nil在Swift中不是一个不存在的对象指针,而是一个具体的值,代表值缺失
-
可选值的解析:
-
if 语句和 强制解析
if (name != nil){ // 可以用== 、!= print(name!)// 确定有值时可以用 ! }
-
可选绑定 if 、guard 、while
If-let ,绑定的常量可以作用于if-let第一个分支
let num1 = "abc",num2 = "123" if let count1 = Int(num1),var count2 = Int(num2),count2 > count1 && count2 < 100 { // 可选绑定,可以包含多个可选绑定、多个布尔条件,只有有一个为false,那么就不会走 if语句的第一个分支 }
-
隐式可选类型解析
let opName:String? = "abc" let resolutionName:String! = opName let name:String = resolutionName print(name,resolutionName,opName) // abc Optional("abc") Optional("abc")
-
-
-
错误处理
func makeASandwich() throws { } do { try makeASandwich() eatASandwich() } catch SandwichError.outOfCleanDishes { washDishes() } catch SandwichError.missingIngredients(let ingredients) { buyGroceries(ingredients) }
-
断言和先决条件
断言帮助你在开发阶段找到错误和不正确的假设,先决条件帮助你在生产环境中探测到存在的问题。
// 断言 (只会在开发环境下执行,对生产环境不会造成影响) let age = 3 assert(age > 0,"年龄不能为负数") assertionFailure("在其他地方做过条件判断,这里可以直接用fail断言") // 先决条件precondition
网友评论