swift基本语法——Optional可选类型

一个可选类型的常量或变量说明它可以有一个指定值,也可以是nil。可选类型可用于声明所有的数据类型,包括基础数据类型、类、结构体等。

可选类型的声明

1.可选常量

let a:Int?

2.可选变量

var y:Int? = 10

如果不给可选变量赋值,则它的默认值为nil。在开发中,还可以给可选项(包括可选常量和可选变量)赋值为nil,表示它没有值。要注意的是,只有可选项可以赋值为nil,非可选的常量和变量不能赋值为nil。如果想要你的数据能赋值为nil,则必须给它声明为可选类型。
注意:
Swift的nil和Objective-C的nil不一样。在OC中,nil表示一个空指针,只能用于对象。在Swift中,没有指针的概念,nil的含义是一个值,表示值得缺失。Swift中的nil可用于任何类型的可选项,不仅限于对象。
标准库中定义的可选类型是命名型类型Optional<T>,使用后缀?是它的简写形式。也就是说,下面两个声明是等价的。

var x:Int?
var x:Optional<Int>

解包(Unwrapping)

可选项不能直接参与计算,要使用可选项的值,必须对它进行解包。解包方法是在可选项后加叹号( !),表示取得可选项的值,如果没有值,则编译器会报错。
所以在强制解包时,一定要确保可选项例有非nil得值,方法是使用if语句提前对它进行判断。

隐式解析可选类型

隐式解析可选类型的声明方法是将数据类型后的问号( ?)改成叹号( !)

let x:Int! = 5
var y:Int! = 10

隐式解析可选类型本质上是一个可选类型,但是可以被当作非可选类型来取值,可以把它当作一个自动解析的可选类型,而不需要每次使用的时候显示解析。

空合并运算符( ??)

空合并运算法的语法结构为:

a??b

当可选类型a不为空时,对a进行强制解包,取出a的值。反之,当a为空时,返回默认值b。其中b可以是字面值、常量/变量或者表达式。
空合并运算符有两个条件:

  • 表达式a必须是可选类型(Optional);
  • 默认值b的数据类型必须与a的值数据类型一致。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容