- 快速教程
- 斯威夫特 - 主页
- 斯威夫特 - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 数据类型
- Swift - 变量
- Swift - 可选
- Swift - 元组
- Swift - 常量
- Swift - 文字
- Swift - 运算符
- Swift - 决策
- Swift - 循环
- Swift - 字符串
- 斯威夫特 - 角色
- Swift - 数组
- Swift - 套装
- 斯威夫特 - 字典
- Swift - 函数
- Swift - 闭包
- Swift - 枚举
- Swift - 结构
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 初始化
- Swift - 去初始化
- Swift - ARC 概述
- Swift - 可选链接
- Swift - 类型转换
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- 斯威夫特有用的资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用的资源
- 斯威夫特 - 讨论
Swift - 可选
Swift 4 还引入了Optionals类型,它可以处理值的缺失。可选表示“有一个值,并且它等于 x”或“根本没有值”。
Optional 本身就是一种类型,实际上是 Swift 4 的新的超级枚举之一。它有两个可能的值:None和Some(T),其中T是 Swift 4 中可用的正确数据类型的关联值。
这是一个可选的整数声明 -
var perhapsInt: Int?
这是一个可选的字符串声明 -
var perhapsStr: String?
上面的声明相当于显式地将其初始化为nil,这意味着没有值 -
var perhapsStr: String? = nil
让我们通过以下示例来了解可选值在 Swift 4 中的工作原理:
var myString:String? = nil if myString != nil { print(myString) } else { print("myString has nil value") }
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
myString has nil value
可选值类似于 Objective-C 中使用nil和指针,但它们适用于任何类型,而不仅仅是类。
强制展开
如果您将变量定义为可选,那么要从该变量中获取值,您必须将其解包。这只是意味着在变量末尾添加一个感叹号。
让我们举一个简单的例子 -
var myString:String? myString = "Hello, Swift 4!" if myString != nil { print(myString) } else { print("myString has nil value") }
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
Optional("Hello, Swift 4!")
现在让我们应用展开来获取变量的正确值 -
var myString:String? myString = "Hello, Swift 4!" if myString != nil { print( myString! ) } else { print("myString has nil value") }
当我们使用 Playground 运行上述程序时,我们得到以下结果。
Hello, Swift 4!
自动拆包
您可以使用感叹号而不是问号来声明可选变量。此类可选变量将自动解包,您无需在变量末尾使用任何进一步的感叹号即可获取分配的值。让我们举一个简单的例子 -
var myString:String! myString = "Hello, Swift 4!" if myString != nil { print(myString) } else { print("myString has nil value") }
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
Hello, Swift 4!
可选装订
使用可选绑定来查明可选值是否包含值,如果包含,则使该值可用作临时常量或变量。
if语句的可选绑定如下 -
if let constantName = someOptional { statements }
让我们举一个简单的例子来了解可选绑定的用法 -
var myString:String? myString = "Hello, Swift 4!" if let yourString = myString { print("Your string has - \(yourString)") } else { print("Your string does not have a value") }
当我们使用 Playground 运行上述程序时,我们得到以下结果 -
Your string has - Hello, Swift 4!