`

《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号(!)

阅读更多

原创文章,欢迎转载。转载请注明:关东升的博客 

 

在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下。 

1. 可选类型中的问号(?

声明这个类型是可选类型,访问这种类型的变量或常量时要使用感叹号(!),下列代码是显示拆包: 

 

let result1: Double? = divide(100, 200)	
print(result1!) 	

   

2. 可选类型中的感叹号(!) 

声明这个类型也是可选类型,但是访问这种类型的变量或常量时可以不使用感叹号(!),下列代码是隐式拆包: 

let result3: Double! = divide(100, 200)
 print(result3)          
 

  3. 可选链中的感叹号(!) 

多个实例具有关联关系,当从一个实例引用另外实例的方法、属性和下标等成员时就会形成引用链,由于这个“链条”某些环节可能有值,也可能没有值,因此需要采用如下方式访问: 

emp.dept!.comp!.name  

 

4. 可选链中的问号(?) 

在可选链中使用感叹号(!)访问时,一旦“链条”某些环节没有值,程序就会发生异常,我们把感叹号(!)改为问号(?),代码如下所示: 

emp.dept?.comp?.name 

 

这样某些环节没有值的时候返回nil,程序不会发生异常。

 

 

 

 

 

 

 

 

  • 大小: 21.1 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics