zoukankan      html  css  js  c++  java
  • Swift学习——Swift解释特定的基础(七)

    Implicitly Unwrapped Optionals    隐式解析选项

    如上所述。可选意味着常数或变量“没有值”。通过可选if声明来推断是否存在值,假设有值析值。

    有时候在程序架构中,第一次被赋值之后。能够确定一个可选总会有值。

    在这样的情况下。每次都要推断和解析可选值是很低效的,由于能够确定它总会有值。

    这样的类型的可选被定义为隐式解析可选(implicitly unwrapped optionals)。

    把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选。

    当可选被第一次赋值之后就能够确定之后一直有值的时候,隐式解析可选很实用。隐式解析可选主要被用在 Swift 中类的构造过程中,请參考类实例之间的循环强引用。

    一个隐式解析可选事实上就是一个普通的可选,可是能够被当做非可选来使用,并不须要每次都使用解析来获取可选值。以下的样例展示了可选String和隐式解析可选String之间的差别:

    let possibleString: String?

    = "An optional string." println(possibleString!) // requires an exclamation mark to access its value // prints "An optional string." let assumedString: String! = "An implicitly unwrapped optional string." println(assumedString) // no exclamation mark is needed to access its value // prints "An implicitly unwrapped optional string.


    你能够把隐式解析可选当做一个能够自己主动解析的可选。

    你要做的仅仅是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾。

    注意:假设你在隐式解析可选没有值的时候尝试取值。会触发执行时错误。和你在没有值的普通可选后面加一个惊叹号一样。


    你仍然能够把隐式解析可选当做普通可选来推断它是否包括值:

    if assumedString {
        println(assumedString)
    }
    // prints "An implicitly unwrapped optional string.
    你也能够在可选绑定中使用隐式解析可选来检查并解析它的值:
    if let definiteString = assumedString {
        println(definiteString)
    }
    // prints "An implicitly unwrapped optional string.

    注意:假设一个变量之后可能变成nil的话请不要使用隐式解析选项。假设你需要推断一个变量的生命周期是否nil如果。请使用普通的可选类型。

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    mysql数据库备份脚本
    int main(int argc,char *argv[])参数的应用
    文件I/O实现cp复制功能
    网络通信TCP编程实例代码
    外部碎片、进程描述符、内部碎片
    程序、进程、作业、线程的关系
    word2016怎么从第三页开始设置页码
    ARMs3c2440开发板挂接NFS服务
    u-boot添加一个hello命令
    vi 编辑器跳转到指定行数
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4729728.html
Copyright © 2011-2022 走看看