Swift(三、元组-可选类型及其解析)
来源:互联网 发布:c语言代码审查工具 编辑:程序博客网 时间:2024/05/21 21:50
1、Swift入门学习笔记(第一版),对Swift的基础知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~
2、在学习完基本的知识点以后会结合官方文档及相关资料,在此版本的基础上进行添加更改。
三、元组-可选类型及其解析
1、元组
a、元组将任意数据类型组装成一个复合值(不要求相同类型)
b、元组在作为函数返回值时特别适用,可以为函数返回更多的信息
1.1、元组的创建及访问
//可以理解为key-value,x对应1,y对应2let (x,y) = (1,2)print("x = \(x),y = \(y)")let http404Error = (404,"Not Found")print(http404Error)//元组访问print(http404Error.0,http404Error.1)let (statusCode,statusMessage) = http404Errorprint(statusCode,statusMessage)//如果只想访问一部分元组,可用下划线分解let (justTheStatusCode,_) = http404Errorprint(justTheStatusCode)//元组创建方式:元组单个命名let http200Status = (statusCode:200,description:"OK")print(http200Status.statusCode,http200Status.description)
Output:
x = 1,y = 2(404, "Not Found")404 Not Found404 Not Found404200 OK
2、可选类型
有值等于固定值 或者 没有值不存在为nil(?的用法)
2.1、转化
譬如讲一个String转化为Int,但是并不是所有String都能转换
let possibleNumber = "123"let convertedNumber = Int(possibleNumber)print(convertedNumber)
Output:
Optional(123)
其返回的是一个可选类型,Int?
2.2、nil的讨论
var responseCode:Int? = 404 //要么存在,值为404responseCode = nil //responseCode不包含值
OC中的nil是指向不存在对象的指针,而Swift的nil非指针,是一个确定的值表示值缺失,任何类型的可选类型都能赋值为nil,而不仅限于对象类型,并且更安全
注意点
1、 Swift里面nil,不能用于非可选类型
2、 因此在代码中如果常量或变量需要处理值缺失的情况,则需要声明为对应的可选类型
3、 如果定义的可选类型的对象不提供默认值,那么默认为nil
第3点对应的情况
var strValue:String? //不提供默认值,默认为nillet hashValue = strValue?.hashValue //问号的意思是询问可选量是否响应后面的方法,不存在那么hashValue的常量也是不存在,存在则调后面的方法print(hashValue) //打印结果为nil
因此Optional值操作,可以用来判断是否响应方法
3、可选类型的解析
可选类型每次访问都会提取并检测其值是否存在,但有时候根据程序结构是可以推断可选量在首次赋值后必然存在值,那么就不需要验证值是否存在,可以使用!进行解包获取它的值,或者使用Optional Binding
3.1、解析(!的使用)
let possibleString:String? = "An optinal string"print(possibleString!) //解包,确定possibleString一定存在,加!不需要每次验证是否存在let stringValue = possibleString!.hashValue //确定存在选择解包,否则加?print(stringValue)
3.2、Optional binding 可选绑定
结合控制流(if or while),如果有值然后解析
3.3、隐式解析
直接在定义的时候加!,而不是每次使用时加!。用于第一次赋值以后,可以确定一个可选类型总会有值的情况
let testString:String! = "Test String"print(testString)
Output:
Test String
解析的使用场景总结
1、强制对可选量进行解包
2、声明 隐式解包的可选类型,一般用于类中的属性
- Swift(三、元组-可选类型及其解析)
- Swift傻傻分不清楚系列(三)元组与可选类型
- swift 学习计划(一)元组、Optional可选类型
- Swift语法精炼(1)-基础数据类型,元组,可选类型
- swift基础3-元组、可选类型的介绍
- swift元组类型
- swift元组类型
- swift语言-可选类型
- Swift:可选类型(Optional)
- Swift-Optional(可选类型?!)
- swift 之可选类型
- swift之可选类型
- Swift 可选类型 ?和!
- Swift 可选类型
- swift可选类型
- Swift笔记:可选类型
- Swift - 可选类型
- Swift-可选类型
- 简单搭建钓鱼Wifi信号获取用户手机号
- mysql主从配置,实现实时备份数据
- Redis: 实现树形数据结构
- 常用服务和开放端口对照表
- hive权限管理之实践
- Swift(三、元组-可选类型及其解析)
- 用Keil-MDK开发TQ2440裸机程序入门教程
- Android控件: 仿探探首页 相册侧滑层叠加载
- DDD领域驱动设计
- hdu 1114 多重背包
- 技术揭秘12306改造(一):尖峰日PV值297亿下可每秒出票1032张
- 全国(大学)高等教育各学科视频教学全集
- 动态规划排线算法问题java语言实现 在一块电路板的上、下2端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱与下端接线柱相连
- BMP位图扫盲