美文网首页
swift optional 解包

swift optional 解包

作者: 叩首问路梦码为生 | 来源:发表于2018-08-31 09:21 被阅读64次

import UIKit

class ViewController: UIViewController {

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

    func demo1(x:Int?,y:Int?)  {
        // 如果有数值 打印数值  如果没有 用?? 后面替代
        print((x ?? 0)+(y ?? 0))
        
        let name :String? = "老王"
        
        print((name ?? "") + "你好")
        // ?? 优先级低  如果name 为nil 就用??后面替代  ,   否则用 ??前面的数值
        print(name ?? ""+"你好")
    }

    
    func demo2(x:Int?,y:Int?)  {
       
        if x != nil && y != nil  {
            //强制解包有风险
            print(x!+y!)
        }else
        {
            print("x或者y为nil")
        }
        
    }

    
    // if  let 连用 判断对象的数值是否为nil  {}内一定有值,可以直接使用,不需要解包
    // if  var  连用 可以对值修改
    func demo4()  {
        let oName:String? = "老王"
        let oAge : Int?=10   //=nil
        
        // 判断不为nil
        if oName != nil && oAge != nil {
            print(oName! + String(oAge!))
        }
        
        //if let  连用
        if var name = oName,
            let age = oAge
        {
            // 进入分支之后一定有数值 不需要解包了
            name = "老李"
            print(name+String(age))
        }else
        {
            print("name 或者 age 为nil ")
        }
        
        
    }
    
    
}

打印:
--------------------

0
老王你好
老王
20
老王10
老李10


相关文章

网友评论

      本文标题:swift optional 解包

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