Swift Optional学习笔记

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)
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值