• Swfit 可选类型


    可选类型:
    我们先看看如下代码:
    var n1: Int = 10
    n1 = nil //编译错误

    let str: String = nil //编译错误
    Int和String类型不能接受nil的,但程序运行过程中有时被复制给nil是在所难免的,Swift为每一种数据类型提供一种可选类型(optional),即在某个数据类型后面加上问号(?)或感叹号(!),修改前文示例代码:
    var n1: Int? = 10
    n1 = nil

    let str: String! = nil
    Int?和String!都是原有类型Int和String可选类型,它们可以接受nil。

    可选类型值拆包
    在可选类型的问号(?)或感叹号(!)究竟有什么区别呢?这与可选类型的“拆包”(unwrapping)有关,拆包是将可选类型变成普通类型,如果我们直接打印非空的可选类型值,代码如下:
    var n1: Int? = 10
    print(n1)
    输出的结果是Optional(10),而非10。所以试图计算表达式n1 + 100会发生编译错误,代码如下:
    var n1: Int? = 10
    print(n1 + 100) //发生编译错误
    需要对可选类型值进行“拆包”是必要地。
    “拆包”分为显示拆包和隐性拆包。
    使用问号(?)声明的可选类型,在拆包时需要使用感叹号(!),这种拆包方式称为“显式拆包”;
    使用感叹号(!)声明的可选类型,在拆包时可以不使用感叹号(!),这种表示方式称为“隐式拆包”。
    看看下面代码:
    var n1: Int? = 10
    print(n1! + 100) //显式拆包

    var n2: Int! = 100
    print(n2 + 200) //隐式拆包

    1
  • 相关阅读:
    Colidity-- NumberOfDiscIntersections
    Colidity--Triangle
    Colidity--CountDiv
    Colidity--MinAvgTwoSlice
    Colidity--GenomicRangeQuery
    Colidity--PassingCars
    操作系统--内存管理方式
    蓝桥杯练习系统—算法训练 P1102
    蓝桥杯练习系统—基础练习 完美的代价
    2n皇后问题
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/5073884.html
Copyright © 2020-2023  润新知