欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift Optional学习笔记

程序员文章站 2022-06-08 09:23:04
...

Optional(可选项)

声明方式:在变量类型后加 ?
两重含义:

  • 这里有一个值,它等于x;
  • 这里根本没有值

通过给可选变量赋值为nil,表示没有值。
Swift中,nil不是指针,它只是值缺失的一种特殊类型,任何类型的可选项都可以设置为nil,而不仅仅时对象类型。且只有可选项可以赋值为nil

  • 可选项展开

可选项是没法直接使用的,需要用 !展开之后才能使用(意思是我知道这个可选项有值)

let str: String? = "abc"
let count = str.count // error: 必须先展开才能访问其属性
if str != nil {  // 判断不为nil再做展开
    let count = str!.count // 可选项展开
    print(count)
}

强制展开,不推荐,如果可选项为nil,出错:

let str: String? = nil
let count = str!.count // error : EXC_BAD_INSTRUCTION
  • Optional-绑定

可以使用可选项绑定来判断可选项是否包含值

if let actualStr = str { // 首先判断str是否为nil,如果不是nil,会赋值给常量actualStr
    let count = actualStr.count
    print(count)
}
  • Optional-隐式展开

声明时使用!而非?(有什么用,还没学到)

let str: String! = "abc"
let count = str.count
  • Optional-可选链

对可选项访问时在后面加 ?
如果可选项不为nil,返回也是一个可选项结果,否则返回nil

let str: String? = "abc"
let count = str?.count // 此时count依然为一个可选项
//let lastIndex = count - 1 // error: 必须先展开才能访问其属性
if count != nil {
    let lastIndex = count! - 1
    print(lastIndex)
}
相关标签: Swift swift