013_swift_问号?和感叹号! Optional

为什么需要 Optional

什么是 Optional

变量类型后面添加?表示

这里有一个值=  x  或者 这里根本没有数值

Optional-if 语句 以及强制展开

可选项是没法直接使用的

需要用!展开之后才能使用。意思是确定步不为 nil

强制展开

 

 绑定

隐士展开

 可选链

  可选项后面加?

如果可选项不为 nil 返回一个可选项结结果,否则返回 nil

源码探究

var str2:Optional<String>="abc"
if(str2 != nil){
    let count = str2.unsafelyUnwrapped.count
    print(count)
}

可以点进去看 Optional的源码  你会发现这并不是 swift 的新特性 而是使用了枚举

 

//声明为可空 nil 其实是声明为Any类型
var password2: String?
dump(password2)
//下面 第一个?声明一个Optional变量  第二个?在堆Optional值操作时,判断是否可以相应后面的操作
var password:String?
print(password?.count)
//
//双??号 前面的值为空的时候 使用后面的值
var password3: String?
print(password3?.count ?? 0)
//下面的!就是拆包的意思 把Optional拆分成原始值
var password4:String?
password="1234556"
print(password4!.count)
//会被可选包裹
print(password4?.count)
// 双问好代表前面为空的时候使用后面数值来充当默认值
print(password4?.count ?? 0)
//传统的空值判断,通常要使用if语句 代码量比较大,而使用问好和感叹号,则可以很简洁的进行空值判断。下面就是一个空值判断的实例
class Pet{
    var name: String?
}
class Person{
    var name : String?
    var pet : Pet?
}
let person=Person()
person.pet
//如果person.pet 为空就直接返回空。不再尝试获取.name属性
person.pet?.name
person.pet=Pet()
person.pet
person.pet?.name

person.pet?.name="Brid"
person.pet?.name

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安果移不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值