• Swift学习——Swift解释具体的基础(六)


    Optionals    可选


    可选(它似乎并不如此翻译)它适用于那些值这种情况可能是空的,有两种情况一个可选:存在值并等于x,要么值不存在。

    选配的概念在OC和C里面并没有。在OC中最接近的概念就是:OC中的返回值为对象的函数。当对象不存在的时候,能够返回nil,可是nil仅仅能代表对象,不能够代表基础类型或者结构体和枚举类型。OC中使用NSNotFound表示值不存在。

    在Swift中,不须要使用其它的类型表示不存在的值。

    举个样例:

    在Swift中,String类型有一个方法叫做toInt,可是并非全部的String都能够转换成Int的。

    let possibleNumber = "123"
    let convertedNumber = possibleNumber.toInt()
    // convertedNumber is inferred to be of type "Int?", or "optional Int
    由于toInt可能会失败。它会返回一个可选的Int类型(写作 Int?)而不是Int类型,表示这个返回值能够是一个Int类型的值。也有可能没有值。



    If Statements and Forced Unwrapping    if条件语句和强制解析


    你能够使用IF条件语句推断一个选配里面有没有值,一旦你确定了选配中含有值,你能够在选配的名称后面加上一个感叹号(!),表示我知道这个选配里面含有值。这个过程被称为选配值的强制解析。

    if convertedNumber {
        println("(possibleNumber) has an integer value of (convertedNumber!)")
    } else {
        println("(possibleNumber) could not be converted to an integer")
    }
    // prints "123 has an integer value of 123
    在使用!之前,一定要保证配选值里面存储着真的值。不为空。



    Optional Binding    可选绑定


    你能够使用可选绑定推断一个可选值里面是否有值,假设有值,能够将这个值作为常量或者变量。能够使用if或者while语句进行推断和赋值。

    能够重写上面的强制解析,使用可选绑定进行推断一个选配值是否为空:

    if let actualNumber = possibleNumber.toInt() {
        println("(possibleNumber) has an integer value of (actualNumber)")
    } else {
        println("(possibleNumber) could not be converted to an integer")
    }
    // prints "123 has an integer value of 123"
    
    上述过程能够理解为:

    假设possibleNumber.toInt获得的选配整型包括值。那就定义一个常量actualNumber用来存储这个值。

    假设转换成功,actualNumber在if的第一个条件中可用,它已经被初始化包括可选值。不须要使用!

    来訪问它的值。

    在可选绑定的过程中,你能够使用变量也能够使用常量。



    nil    空值


    var serverResponseCode: Int? = 404
    // serverResponseCode contains an actual Int value of 404
    serverResponseCode = nil
    // serverResponseCode now contains no value
    假设定义常量和变量的时候没有进行赋值。那么默认的值就是nil

    var surveyAnswer: String?
    // surveyAnswer is automatically set to nil

    注意:Swift中间nil和OC中间nil代表的意义是不一样的,OC中间nil它不是对象指针的一种特定类型的,在Swift在nil它是一种特定类型的空省值。不管可选什么类型的值它可以被设置为nil,如果对象类型是不一定。



  • 相关阅读:
    Acwing 164 可达性统计 (拓扑排序+bitset)
    STL-bitset的基本用法
    Acwing 115 给树染色 (贪心)
    Acwing 112 雷达设备 (贪心)
    Acwing 110 畜栏预定 (贪心+stl)
    Acwing 110 防晒 (贪心算法)
    Acwing 七夕祭 (前缀和+中位数+思维)
    Acwing 103 电影 (map)
    USACO 最佳牛围栏 (二分答案+前缀和+双指针)
    Acwing 101 最高的牛 (差分数组)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5027313.html
Copyright © 2020-2023  润新知