swift中? 、! 和 ??

作者: smalldu | 来源:发表于2015-12-13 23:32 被阅读313次

    swift中?和!大家可能都知道是可空类型 optional ,也叫可选类型

    这样做是为了类型安全,比如声明一个对象A为可选类型,或者一个可选的String

    var a:A?
    var str:String?
    var num:NSNumber!
    

    可选类型 可以不用初始化,如果不是可选类型,必须在init下进行初始化。保证在调用的时候不是nil

    可选类型在调用的时候必须加上?或者!,声明的时候用的!的可以不加,表明你认定这个对象再使用的时候肯定不会为nil,也可以加?不会报错

    a?.age
    //这样调用如果a是nil就不执行a.age如果a不是nil才会去调用它的属性,得到的也是一个可选的值
    
    a!.age
    //表示你认定a可定不是nil,如果a是nil就会报错,得到是固定的值
    
    if let a = a{
      a.age
      //可选绑定 如果a不为nil会进来执行a.age得到的是非可选的值
    }
    
    //如果有多个可选绑定
    if let a = a,str=str{
      //blabla
    }
    
    

    ?和!网上讲的都很多,其实关于可选这里还有个??

    ??是取两个中不为nil的

    private var i:Int?
    private var j:Int?
    1、只有i有值
    i = 1
    let x = i ?? j
    print(x) //输出optional(1)
    2、只有j有值
    j = 0
    let x = i ?? j
    print(x) //输出optional(0)
    3、i和j都有值
    i = 1
    j = 2
    let x = i ?? j
    print(x) //输出optional(1)
    4、i和j都没值
    let x = i ?? j
    print(x) //输出nil
    

    相关文章

      网友评论

      本文标题:swift中? 、! 和 ??

      本文链接:https://www.haomeiwen.com/subject/pwcuhttx.html