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如果。请使用普通的可选类型。

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

  • 相关阅读:
    "开关"组件:<h-switch> —— 快应用组件库H-UI
    "范围选择器"组件:<range> —— 快应用组件库H-UI
    "滑动选择器"组件:<h-slider> —— 快应用组件库H-UI
    "星级评分"组件:<rate> —— 快应用组件库H-UI
    "价格"组件:<price> —— 快应用组件库H-UI
    "长整数"组件:<long> —— 快应用组件库H-UI
    javaweb简单的学生信息录入系统
    java简单验证码生成程序
    请写一个java类,在任何时候都可以向它查询“你已经创建了多少个对象?”
    java静态初始化块的执行顺序
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4729728.html
Copyright © 2011-2022 走看看