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
网友评论