Swift_3.0_初级篇07_可选项的判断

demo()

 func demo () -> () {
        let x: Int? = 10
        let y: Int?  = 100
        print(x! + y!) //强行解包有风险 //输出 110
    }
方法的创建
方法

demo0(x: 10, y: 120)

func demo0 (x: Int , y:Int) -> () {
        print(x + y) //输出 130
    }

demo1(x: 10, y: 120)

 func demo1 (x: Int? , y:Int?) -> () {
        //强行解包有风险
        print(x! + y!) //输出 130
    }

demo2(x: 10, y: nil) //如果传的参数 是 nil 要小心了

 func demo2 (x: Int? , y:Int?) -> () {
        //使用 if 判断  但是 会让代码很丑陋,凌乱
        if x != nil &&  y != nil  {
               print(x! + y!)
        }else {
           print("x 或者 y 为 nil")
        }
    }

为了简化 demo2 so demo3诞生了
demo3(x: 10, y: nil)

    func demo3 (x: Int? , y:Int?) -> () {
        print((x ?? 0) + ( y ?? 0))  //  输出 10
        /*
         ?? 是一个简单地 三目
         - 如果有值 使用值
         - 如果没有值 使用 ?? 后面的的值替代
         */
       }

补充:

        let name: String? = "啊啊"
        print(name! + "你好") //输出  啊啊你好
        
        /*
        let name1: String? = nil
        print(name1! + "你好")//unexpectedly found nil while unwrapping an Optional value
        */
 
        let name2: String? = "啊啊"
        print((name2 ?? "") + "你好") //输出 啊啊你好
        
        let name3: String? = nil
        print((name3 ?? "") + "你好") //输出  你好
        
        let name4: String? = "老王"
        print(name4 ?? "" + "你好") // ?? 的优先级很低 只会输出 老王 
        // 不知道你看懂没上一个 它的原理其实是这样的
        //print((name4) ?? ("" + "你好")) //最后在执行 ??

你可能感兴趣的:(Swift_3.0_初级篇07_可选项的判断)