swift 系统学习 04 可选值 解包 解包的几种方式

来源:互联网 发布:matlab svd 算法 编辑:程序博客网 时间:2024/06/06 00:41
//: Playground - noun: a place where people can playimport UIKit/* * 本节主要内容: * 1.可选型的基本使用 * 2.可选型的解包 */// 例如:let possibleNumber = "123"// 给定字符串, 转成整型(Int结构体提供方法)// convertedNumber是整型可选型(类型)let convertedNumber = Int(possibleNumber)let failToConvert   = Int("hello")/* * 如何声明可选型? * 1.明确: 是什么什么可选型? (可选值 可以为nil) */// 显示声明整型可选型变量var errorCode: Int? = 404errorCode = nilvar errorCodeNew: Int = 404// nil只能赋值给可选型// errorCodeNew = nil 编译错误var errorMessage: String? = "Not Found"print(errorCode)print(errorMessage)// 拼接新的字符串print("Error message is \(errorMessage)")// 可选型解包Unwrap: 获取可选型非nil的值/* * 解包方式一: 强制解包 * 1.语法: 在对应的可选型后面加上叹号 * 2.风险: 如果可选型是nil, 强制解包编译错误 * 3.规避风险: 判断是否为nil, 如果不是就强制解包 */print("Error message is \(errorMessage!)")// print("Error code is \(errorCode!)")if errorCode != nil {    print("Error code is \(errorCode!)")} else {    print("Error code is nil")}/* * 解包方式二: 可选型绑定Optional Binding(if let解包) * 1.语法一: if let <constantName> = someOptional { 语句 } * 2.语法二: if var <variableName> = someOptional { 语句 } */// newErrorCode就是errorCode可选型的非空的值, 是Int类型if let newErrorCode = errorCode {    print("Error code is \(newErrorCode)")} else {    print("Error code is nil")}// 改进方式(推荐); 等号左边的errorCode是局部常量, 作用域仅限于第一个大括号内if let errorCode = errorCode {    print("Error code is \(errorCode)")} else {    print("Error code is nil")}// 举例: 内置方法的例子var greetings = "hello"greetings.range(of: "ll")greetings.range(of: "aa")// 对多个可选型解包的简化形式if let errorCode = errorCode, let errorMessage = errorMessage {        // 获取两个可选型的非空值        print("error code is \(errorCode) and message is \(errorMessage))")}// 简化形式和if条件结合if let errorCode = errorCode, let errorMessage = errorMessage, errorCode == 404, errorMessage == "Not Found" {    print("error code is 404 and message is Not Found")}

0 0