002-可选项解包

2016-11-13  本文已影响12人  紫荆秋雪_文

1、可选项强行解包

使用!来给可选项解包

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        demo(x: 10, y: 20)
    }

    func demo(x:Int?, y:Int?) {
        //直接进行强行解包
        print(x! + y!)//输出结果:30
    }

2、但是这样直接使用!来强行解包是有风险得:如果传入一个空值,程序就会崩溃

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        demo(x: 10, y: nil)
    }

    func demo(x:Int?, y:Int?) {
        //直接进行强行解包
        print(x! + y!)//因为y:nil,因为在swift中不同的数据类型是不能进行计算的所以会崩溃
    }

3、解决强行解包带来的风险,使用??来解决可选项的解包

??是一个简单的 三目运算。如果有值,使用值,如果没有值,使用 ?? 后面的内容替代

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        demo1(x: 10, y: nil)
    }
    
    func demo1(x:Int?, y:Int?) {
        
        print((x ?? 0) + (y ?? 0))
        //输出结果:10
    }

小结:使用??就可以解决强行解包带来的风险

上一篇 下一篇

猜你喜欢

热点阅读