zoukankan      html  css  js  c++  java
  • Swift4.0复习Optional

    1.Optional基本使用:

    当我们声明一个Optional对象时,无论该对象是在文件作用域还是在函数体内作为局部对象声明,如果不对它初始化,那么它的值默认为空(nil)。

    // 声明a为Int类型的option类型对象
    var a: Int? = 100
    // 类型为Int?,初始化为nil
    var b: Int? = nil

    2.Optional链:

    3.Optional的强制拆解:

    4.Optional绑定:

    5.空结合操作符:

    var a = Int?(0)
    let b = 0
    
    // 这里的a ?? b表达式
    var c = a ?? b
    
    // 相当于
    c = a != nil ? a! : b

    6.隐式拆解的Optional类型:

    // 这里声明了一个隐式拆解的Optional变量a
    var a: Int! = 10
     
    // 这里b的类型为Int?
    let b = a
     
    // 这里输出:b = Optional(10)
    print("b = (String(describing: b))")
     
    // 当隐式拆解的Optional对象作为复合赋值操作符的左值时,
    // 仍然需要使用 ! 或 ? optional-chaining操作符
    a! += 20
    a? += 5
     
    // 这里声明了一个隐式拆解的Optional数组变量arr
    var arr: [Int]! = [1, 2, 3]
     
    // 这里对arr使用 ! 操作符,
    // 使得 arr! 表达式作为 += 的左操作数
    // 这里的 ! 不能缺省
    arr! += [4, 5, 6]

    使用场景:

    “将某个图像视图控件作为某个视图控制器类的实例属性。
    但是在声明它的时候由于不知道当前视图控制器的实际尺寸,也不知道所用的图像,
    因此无法对它进行初始化,而只有等到调用 viewDidLoad方法之后才能对它初始化。
    那么这个时候,该图像视图对象就可以声明为隐式拆解的Optional类型,后续对它成员的访问就不需要显式样使用optional-chaining操作符了,代码也能更简洁一些。” 摘录来自: “大话Swift 4.0”。 iBooks.

      

  • 相关阅读:
    HDU1258 Sum It Up(DFS)
    hdu 1078 FatMouse and Cheese(记忆化搜索)
    HDU1072 Nightmare (bfs+贪心)
    HDU 2102 A计划 经典搜索
    hdu 1180诡异的楼梯(bfs)
    HDU 1065.I Think I Need a Houseboat
    559_N叉树的最大深度
    236_二叉树的最近公共祖先
    589_N叉树的前序遍历
    每天进步一点点
  • 原文地址:https://www.cnblogs.com/pengsi/p/8488701.html
Copyright © 2011-2022 走看看