[Swift] 可选型

变量或常量在某些情况下可能表示的是未被赋值的情况,若直接不对某一类型的变量赋值,会提示该变量未初始化不可用。这时就需要可选型,可选型有两种值,一种是变量类型的值,另一种是未赋值类型 nil。声明变量时,在变量类型的后面加一个?,则该变量为可选型。

var optionalString: String?
print(optionalString)

输出结果:

nil

在很多情况下,需要对可选型进行是否有值的逻辑判断,这时可以配合let使用

var optionalName: String? = "Mark"

if let name = optionalName {
    print("Hello \(name)!")
} else {
    print("Hello!")
}

按目前理解,其实效果等同于

var optionalName: String? = "Mark"

if optionalName != nil {
    print("Hello \(optionalName!)!")
} else {
    print("Hello!")
}

在变量名后加!相当于对可选型拆包,去取其真正的值,如果该可选型数据的值是 nil,则此时程序会崩溃。所以配合是否有值的判断,在确认有值的情况下才可对其强制拆包。

为了能够方便地访问可选型,我们可以将可选型后面的?换成!,这种方式称为隐式拆包,因为在拆包时在变量或常量后面不需要再加!

var optionalName: String! = "Mark"

if optionalName != nil {
    print("Hello \(optionalName)!")
} else {
    print("Hello!")
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于 Swift 重要这个文档所包含的准备信息, 是关于开发的 API 和技术的。这个信息可能会改变, 根据这个文...
    无沣阅读 4,378评论 1 27
  • Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的新语言。然而,如果你有 C 或...
    XLsn0w阅读 934评论 2 1
  • Swift 介绍 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 ...
    大L君阅读 3,304评论 3 25
  • 2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new ...
    yeshenlong520阅读 2,312评论 0 9
  • 对各种值为"空"的情况处理不当,几乎是所有Bug的来源。 在我们的例子里,尽管tmp的值是nil,但调用tmp的r...
    AKyS佐毅阅读 10,565评论 1 13