swift 可选项和隐式展开可选项
来源:互联网 发布:广东乐普数据科技 编辑:程序博客网 时间:2024/06/05 19:13
- 概念
1.1可选项:定义形式
var surveyAnswer: String?
上面定义了一个变量surveyAnswer,它表示一个可选项变量,即声明了一个值为nil的变量。还可以直接赋值,如下:
var surveyAnswer: String? = "Yeah"
(注意:Swift 中的 nil 和Objective-C 中的 nil 不同,在 Objective-C 中 nil 是一个指向不存在对象的指针。在 Swift中, nil 不是指针,他是值缺失的一种特殊类型,任何类型的可选项都可以设置成 nil 而不仅仅是对象类型。非可选项的变量是不能设置为nil)
可选项的取值形式有两种:强制展开和可选项绑定
//强制展开//一旦你确定可选中包含值,你可以在可选的名字后面加一个感叹号 ( ! ) 来获取值,感叹号的意思就是说“我知道这个可选项里边有值,展开吧。”这就是所谓的可选值的强制展开if convertedNumber != nil { print("convertedNumber has an integer value of \(convertedNumber!).")}//可选项绑定,如果包含就把值赋给一个临时的常量或者变量if let actualNumber = Int(possibleNumber) { print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")} else { print("\'\(possibleNumber)\' could not be converted to an integer")}
1.2 隐式展开可选项
有时在一些程序结构中可选项一旦被设定值之后,就会一直拥有值。在这种情况下,就可以去掉检查的需求,也不必每次访问的时候都进行展开,因为它可以安全的确认每次访问的时候都有一个值。这种类型的可选项被定义为隐式展开可选项,通过在声明的类型后边添加一个叹号( String! )而非问号( String? ) 来书写隐式展开可选项。
隐式展开可选项主要被用在 Swift 类的初始化过程中。
//可选项展开let possibleString: String? = "An optional string."let forcedString: String = possibleString! // requires an exclamation mark//隐式可选项展开let assumedString: String! = "An implicitly unwrapped optional string."let implicitString: String = assumedString // no need for an exclamation mark//注意:如果你在隐式展开可选项没有值的时候还尝试获取值,会导致运行错误。结果和在没有值的普通可选项后面加一个叹号一样。
隐式展开方式
//和可选项一样if assumedString != nil { print(assumedString)}//可选项绑定if let definiteString = assumedString { print(definiteString)}//与可选项区别:展开后面不需要加"!"
参考:https://www.cnswift.org/the-basics
阅读全文
0 0
- swift 可选项和隐式展开可选项
- swift 可选项 "?" 和 "!"
- 可选项
- Swift:optional 可选项的简易说明
- Swift中可选项的总结
- swift中的可选项详细剖析
- Optional 可选项
- 可关闭选项卡
- 三.可选项和控制流
- iOS 开发 -- Swift 语法篇 (二) 可选项
- 浅析swift 中常量&变量&Optional可选项
- Swift的一些基本属性3 (可选项)
- 004--swift基础语法(Optional 可选项)
- 可自动切换选项卡
- 可滚动选项卡-切换
- 模块编译的可选项
- SQLServer2008数据库创建过程和可配置选项
- ipv4头部可选项和ipv6头部的区别
- bzoj1797 [Ahoi2009]Mincut 最小割 网络流+强连通分量
- jquery实现当修改上传的图片时,默认显示当前图片的名称,当选择新的图片时,显示最新的图片名称
- CDN 相关知识汇总
- N: Ignoring file '50unattended-upgrades.ucf-dist' in directory '/etc/apt/apt.conf.d/' as it has an i
- 前端学习笔记整理一 HTML
- swift 可选项和隐式展开可选项
- 使用docker构建JavaWeb服务
- iOS 接口更换为https后SDWebImage加载图片
- 窗口前置方法
- spring的AOP简介与事务传播特性总结
- 上传基本操作
- oracle中的exists 和not exists 用法详解
- liferay portal-ext.properties配置信息
- MySQL性能调优与架构设计