簡單的分支 if語句
// MARK: - 簡單的分支
func demo(){
let x =
/**
1. 條件不需要()
2. 語句必須有{}
--很多公司的代碼規範中,禁止不使用{}
*/
if x > {
print("大了")
}else{
// Condition always evaluates to true
// 永遠不會執行 - 編譯器編譯的時候,會做文法檢查
print("小了");
}
}
三目的文法
func demo1(){
let x =
//三目的文法和OC的基本是一樣的
x > ? print("大了") : print("小了")
//分享,有印象就行
//`()`表示空執行
x > ? print("大了") : ()
}
func demo2(){
let x: Int? =
let y: Int? =
//強行解包有風險
print(x! + y!)
}
MARK: - ??
func demo3(x:Int?,y:Int?)
{
/**
?? 是一個簡單的三目
- 如果有值 使用值
- 如果沒有值,使用??後面的值代替
*/
print((x ?? ) + (y ?? ))
let name:String? = "老王"
print((name ?? "")+"你好")
//??優先級“低” 在使用的時候最好加上()
print(name ?? ""+"你好")
}
if let/var 連用文法
//MARK: -if let/var 連用文法,目的是判斷值
func demo4(){
let oName:String? = "老王"
let oAge:Int? =
if oName != nil && oAge != nil{
print(oName! + String(oAge!))
}
// if let 連用,判斷對象的值是否為nil {}内一定有值,可以直接使用,不需要解包
// if var 連用,{}可以對值進行修改
if let name = oName,
let age = oAge{
//進入分支以後,name和age一定有值,不需要解包
//name 和 age 的作用域僅在{中}
print(name + String(age))
}
}
guard let 和 if let 剛好相反
//MARK: - guard 守衛 / 守護
//guard let 和 if let 剛好相反
func demo5(){
let oName:String? = "老王"
let oAge:Int? =
//guard let 守護一定有值,如果沒有直接傳回
guard let name = oName,
let age = oAge else {
print("姓名或者年齡為 nil")
return
}
// 代碼執行至此,name 和 age 一定有值!
// 通常判斷是否有值之後,會做具體的邏輯實作,通常代碼多!
// 如果用 if let 憑空多了一層分支,guard是降低分支層次的辦法
// guard 的文法是 Swift2.0 推出的
// guard 是Swift 2.0推出來的
print(name + String(age))
}
guard let & if let 使用技巧
//guard let & if let 使用技巧
func demo6(name: String?,age: Int?){
if let name = name , let age = age {
//非空的name和age僅在花括号中有效
print(name + String(age))
}
//使用同名額變量接收值,在後續使用的都是非空值,不需要解包
//好處,可以避免起名字的煩惱
guard let name = name,let age = age else {
print("姓名或者年齡為nil")
return
}
print(name + String(age))
}