美文网首页swift
swift基本语法——Optional可选类型

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

作者: 阿凡提说AI | 来源:发表于2017-02-24 15:19 被阅读55次

    一个可选类型的常量或变量说明它可以有一个指定值,也可以是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的值数据类型一致。

    相关文章

      网友评论

        本文标题:swift基本语法——Optional可选类型

        本文链接:https://www.haomeiwen.com/subject/ocqwwttx.html