分支
let x = 10
//1.条件不需要()
//2.语句必须用{}
//注意:很多公司的代码规范中进制不是使用 {}
if x > 5 {
print("大了")
}else{
print("小了")
}
if let /var 和 guard let / var 的用法
func demo (){
let oName: String? = "PRF"
let oAge: Int? = 28
//普通写法
if oName != nil && oAge != nil {
print(oName! + String(oAge!) )
}
//if let 连用写法 , 判断对象的值是否为nil
if let name = oName,
let age = oAge{// let 可以替换成 var 如果在 {} 有修改值的需要的时候使用var
//namge 和 age 仅仅在这个 {} 的作用于内生效
print(name + String(age))
//此时使用name和age都是不用 `!` 强解包的 ,因为name 和age 必不为空
}else{
print("name 或者 age 为 nil")
}
//guard let / var 写法 ,当有修改值需求的生活,使用var 否则根据系统建议来使用
guard let name = oNmae,let age = oAge{
print ( "name 或者 age 为 nil" )
return//必须写return
}
print (name + String(age)) //代码执行至此说明 name / age 都有值
}
//MARK: 带参数的方法里的分支
func demo2(name:String? , age:Int? ){
//guard let/var 或者 if let/var 的技巧
//在接收参数是,使用同名的变量或者产量,在后续的使用中都是费控,不用解包
guard let name = name , age = age {
print ( "name 或者 age 为 nil")
return
}
print ( name + String(age))
}
三目
let x = 10
x > 5 ? print("大了") : print("小了") //输出结果大了
//三目的写法基本和OC一致
//可省略后半部分 括号:()表示空执行,如果判断结果为否,则什么都不做
x > 3 ? print("大了") :print() //不输出任何结果
//书写规范:
//问号与条件之间需要有空格,
问号操作符的用法
//案例代码
override func viewDidLoad() {
super.viewDidLoad()
demo1(x: 10 , y: 20)
//如果这里输入的参数是x:nil ,y ;nil ,则程序会崩溃
}
//案例方法==无参数无返回值
func demo1(x:Int?,y:Int?) {
print(x! + y!)//当x != nil ,y != nil时,程序没有问题
}
//优化写法
func demo2 (x: Int? , y: Int?){
print((x ?? 0) + (y ?? 0)) //这是一种简易的三目写法
}
//示例代码
func demo3{
let name : String? = "老王"
print("\(name ?? "") 你好")//输出结果:老王你好
print((name ?? "") + "你好")//输出结果:老王你好,如果name == nil 则输出: 你好
print(name ?? "" + "你好") //结果:老王 如果name == nil 结果: 老王
}