在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.Tuples(元组) 元组是多个值组合而成的复合值。元组中的值可以是任意类型,而且每一个元素的类型可以是不同的。 1>定义:使用()包含所有元素,用逗号分开,也可以对每个元素做命名 let http404Error = (404, "Not Found") let http200Status = (statusCode: 200, description: "OK") //重命名
2>获取元素: a.部分获取:是需要部分元素,其余忽略的元素使用下划线代替: let (statusCode, _) = http404Error println("The status code is \(statusCode)") b.按下标获取,下标初始值从0开始 let http404Error = (404, "Not Found") // 通过元组.0获取第二个值 println("The status code is \(http404Error.0)") // 通过元组.1获取第二个值 println("The status message is \(http404Error.1)") c.按名字获取,适用于重命名的情况 let http200Status = (statusCode: 200, description: "OK") println("The status code is \(http200Status.statusCode)") println("The status message is \(http200Status.description)")
2.Optional(可选值) 1>.定义:当值可能不存在(may be absent)的时候使用Optionals. 文档中解释说:"There is a value, and it equals x." or "There isn't a value at all." 注:if语句可以判断Optionals有没有值 //1.显示定义 //不确定是否有值,使用? var opt1:String? = "OptOne" if opt1 {println("opt1:\(opt1)")} //确定以后用在其他地方的时候肯定有值,使用! var opt2:String! = "OptTwo" if opt2 {println("opt2:\(opt2)")} //2.隐式定义,在类型转换时,不确定是否可以转换成功,所以转换后的对象都是隐式的Optional var opt3 = opt2.toInt() if opt3 {println("opt3:\(opt3)")}
2>.optional binding(可选绑定) 使用可选绑定(optional binding)来判断可选是否包含值,如果包含就把值赋给一个临时常量或者变量。可选绑定可以用在 if let actualNumber = possibleNumber.toInt() { println("\(possibleNumber) has an integer value of \(actualNumber)") } else { println("\(possibleNumber) could not be converted to an integer") } // 输出 "123 has an integer value of 123" 3>.解析 a.强制解析(forced unwrapping):在optional对象后面跟惊叹号表示此对象必然有值,可以直接使用 if convertedNumber { println("\(possibleNumber) has an integer value of \(convertedNumber!)") } else { println("\(possibleNumber) could not be converted to an integer") } // 输出 "123 has an integer value of 123"
b.隐式解析可选(implicitly unwrapped optionals):有时候在程序架构中,第一次被赋值之后,可以确定一个可选总会有值。在这种情况下,每次都要判断和强制解析可选值是非常低效的,因为可以确定它总会有值。为了解决这一情况,把想要用作可选的类型的后面的问号(
let assumedString: String! = "An implicitly unwrapped optional string." println(assumedString) // 从此以后不需要感叹号,每次都是强制解析
3.Assertions(断言)
可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行。这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因。 使用断言进行调试断言会在运行时判断一个逻辑条件是否为 如果你的代码在调试环境下触发了一个断言,比如你在 Xcode 中构建并运行一个应用,你可以清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态。此外,断言允许你附加一条调试信息。 你可以使用全局 let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因为 age < 0,所以断言会触发
在这个例子中,只有 断言信息不能使用字符串插值。断言信息可以省略,就像这样:
何时使用断言当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:
|
请发表评论