Swift5.0 可选和拆包

1, 首先,在初始化变量的时候给予变量付初始值:这个时候既不需要!也不需要? 

     理由:因为值确定(内部实际上已经做过拆包动作),swift可以根据你的值进行推导出你的类型 , 如果这个时候你声明的变量所推导出得类型和你的实际类型不同。那么,你需要为变量指定类型,或者在程序中进行转化

2, 如果你声明了一个变量,但不希望为它付初始值(或者它有可能是空值),那么这就是一个可选类型,你可以使用?进行标注 ,如果这样,在你实际应用的时候: varabc:String?   if abc?.count >0{} ,因为你没有进行赋值,而它是个可空类型,那么就会报错,这个时候解决这类问题的时候需要你在声明时或者声明后进行复制,并且使用!进行强制拆包。如果您不对它进行赋值,并且直接强行拆包,那么会出现拆包为空而导致的系统报错 ;因此强制拆包是必须得保证声明的变量是经过赋值的

3,在定义一个函数的时候 

如果name1传空会如何?如果name2传空会如何?如果name3传空会如何?

可以肯定的是:name1如果传空在走到函数体的时候是肯定报错的!                                          而name3如果传空是可行的                                                                                                        那么name2呢?                                                                                                                               其实根据第一条内容可以知道,在调用函数的时候已经经过了拆包而不需要进行强制拆包,如果这个时候传入空值的话,会直接出错:它是一个不可为空的string类型的参数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容