swift-基础07-if语句,强制解析与可选绑定和nil

来源:互联网 发布:msbs步枪 知乎 编辑:程序博客网 时间:2024/06/01 21:27

    let number = "123"

//    let number = "hello"

    let convertNumerber = Int(number)

    

    if (convertNumerber != nil) {

    

      print("convertNumber is\(convertNumerber!)")

    

    } else {

      

      print("convertNumber is\(convertNumerber)" )

      

    }

    如果你确定可选包含一个值,你可以在名称后面加惊叹号 !访问可选的值。

    惊叹号 !表示:这个可选有值,请使用它。” 

    使用!表示把这个可变类型降级为不可变类型

    这就是所谓的 强制解析(forced unwrapping)可选的值

    也叫拆包

    可空类型的精度(取值范围)大于不可控类型,所以拆包又叫强制解析

    

    如果用 !来获取一个可选值可能会导致运行时错误。所以,

    使用 !来强制解析值之前,一定要确定可选包含一个非 nil的值(if判断一下)

   

    可选绑定(optional binding)用来判断可选是否包含值,

    如果包含就把值赋给一个临时常量或者变量。

    可选绑定一般用在 if while 语句中,

    对可选的值进行判断并把值赋给一个常量或者变量,例子如下

    

//    let number1 = "123"

    let number1 = "hello"

    

    if let convertNumerber1 =Int(number1) {

      

      print("convertNumber1 is\(convertNumerber1)")

      

    } else {

      

      print("convertNumber1 is nil ")

      

    }

    以上代码表示:如果 Int(number1)返回的可选 Int 包含一个值,

    创建常量 convertNumerber1,并将可选包含的值赋给它。

    如果转换成功,convertNumerber1常量可以在 if 语句的第一个分支中使用。

    convertNumerber1已经被初始化,所以不需要再使用 !获取它的值。

    在这个例子中,convertNumerber1用来输出转换结果。

    

    你可以在可选绑定中使用常量和变量。

   

    通过给可选的变量赋值给nil来表示他们没有值

    

    var serverResponseCode :Int? =404

    

    print(serverResponseCode)

    

    serverResponseCode = nil

    

    print(serverResponseCode)

    

    var myBananaCount:Int?

    

    print(myBananaCount)

   

    var myAppleCount = 3

    myAppleCount = nil

    但是nil不能用于非可选的常量或者变量。

    如果代码中有常量或者变量需要处理值缺失的情况,把他们声明称对应的可选类型

    

    如果一个可选的常量或者变量没有提供默认值,他们会被自动设置为nil

    

    Swift nil Objective-C nil 并不一样。

    Objective-C中,nil 是一个指向不存在对象的指针

    Swift中,nil 不是指针,它是一个确定的值,用来表示值的缺失。

    任何类型的可选都可以被设置为 nil,不只是对象类型。

 

0 0
原创粉丝点击