可选值

作者: json_jie | 来源:发表于2016-06-11 14:14 被阅读13次

    // 有值 , 没有值 nil
    var optionValue :Int?
    if (optionValue != nil) {
    print("有值+(optionValue)")
    }
    if optionValue == nil {
    print("没有值+(optionValue)") // 没有值+nil

    }
    optionValue = 10
    if (optionValue != nil) {
    print("有值+(optionValue)") // 有值+Optional(10)
    }
    if optionValue == nil {
    print("没有值+(optionValue)")
    }

    // ! 表示对可选值的强制解析 optionValue!
    // optionValue 必须有值, 不可以对没有值进行强制解包 如果没有值会引起运行时错误
    // 可选类型是一种类型 不进行强制解包可以理解为类型不一致
    var value:Int = optionValue!
    print(value) // 10

    // 可选绑定
    if var svalue = optionValue { // var svalue = optionValue 是个语法糖 没有值什么也不做,有值的话给 optionValue赋值给 svalue
    print(svalue)
    print(optionValue)
    }

    // 隐式解析可选类型 有值 没有值nil
    var optionToValue: Int! = 99 //隐式可选类型
    //解包1
    if (optionToValue != nil) {
    print(optionToValue) //99
    }
    // 解包 2
    if let ivalue = optionToValue {
    print(optionToValue) //99
    }
    // 解包3 有没有 ! 无所谓
    // optionToValue 没有值 会引起运行时的错误 下边会报错
    // 对一个没有值的可选值进行强制解包 会引起运行时的错误
    // 确定有值的 可以进行强制解析
    var ivalue :Int = optionToValue
    print(ivalue) //99
    var value :Int = optionToValue!
    print(value) // 99

    不管哪一种,对没有值的可选值进行强制解析,会引起运行时错误

    相关文章

      网友评论

          本文标题:可选值

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