Swift 3.0 '??' -- if let / if var -- guard let

'??' 操作符號 運算登記低 相當于簡單的三目運算
三目運算:  條件 ?  結果1 :結果2
例:let a  = 1 ; let b = 3
a>b ? print("a大于B") :print("a小于b")

**??的使用 (a ?? b) 如果a有值那就用a的值 如果沒有值就用'??'后面的來代替 **

??
let a = 90 ; let b = 20
print((a ?? 0) + (b ?? 0)) 結果:110
print(a ?? 0 + b)  
結果:90 【因為 ?? 會進行判斷a是不是為nil  ,此時 a = 90,所以??后面的b不會來替代a的值】

如:let a:String= nil ; let b:String = "老王"
print(a ?? "" + b!)  
結果:老王 【因為 ?? 會進行判斷a是不是為nil  ,此時 a = nil,所以??后面的b替代a的值】

let str ="隔壁家老王"
print(str ??"在等待著什么···") 
 結果:【隔壁家老王】

let sting ="apple"
print((sting ??"")+"上有Xcode")
結果:apple上有Xcode

****在使用'??'時最好加上'()'****

if let / if var

if let 和 if var 連用語法 目的:據說用來判斷值否為nil[空]**不是單純的if【if let / if var 在賦值的同時做判斷而if判只做判斷】

if let 對{}中的值不能做修改
例:
let name: String? = "OC"
        let age: Int? = 20
        if let name1 = name, age1 = age{
            print(name1 + String(age1))  
}
結果 : OC20 【進入分支就代表值不為nil】

或
let name = "Swift"
        let age = 20
        if let name1:String = name,age1:Int = age{
            print(name1 + String(age1))   
        }
結果:Swift20
if var對{}中的值可做修改
let name = "Oc"
let age = 15
例1:   只對name的值做修改
 if var name1:String = name,let age1:Int = age {//只對name對修改age不做修改那么在age1要給予let告訴編譯器age不做修改
            name1 = "Swift"
            print(name1 + String(age1))    
        }
結果: Swift15

例2: 對name和age都做修改
if var name1:String = name,age1:Int = age {//age沒有聲明let 編譯器會認為此時age是可以修改的
            name1 = "Swift"
            age1 = 20
            print(name1 + String(age1))    
        }
結果: Swift20

guard let

1.guard let 和 if let剛好相反 guarg 守護一定有值,如果沒有值 就直接返回
2.通常判斷后有值就直接做邏輯處理
3.guard let 降低分支,if let 會憑空多一條分支

例:
  let name: String? = "Object-c"
        let age: Int? = 20
        guard let name1 = name,age1 = age else {
            print("ssssss")
            return
        }
        print(name1 + String(age1))
結果:Object-c20

如果 
let age = nil
結果:ssssss
guarg var
例:
let name: String? = "Object-c"
let age: Int? = 20
改變name和age的值
 guard var name1 = name,age1 = age else {
            print("其中有個值為nil")
            return
        }
        name1 = "Swift"
        age1 = 2
        print(name1 + String(age1))
結果:Swift2
只改變一個的值
 guard var name1 = name,let age1 = age else {
            print("其中有個值為nil")
           return
        }
        name1 = "Swift"
        print(name1 + String(age1))
結果:Swift20
同樣 如果 let age = nil
輸出結果:其中有個值為nil
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,182評論 6 543
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,489評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,290評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,776評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,510評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,866評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,860評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,036評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,585評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,331評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,536評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,058評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,754評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,154評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,469評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,273評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,505評論 2 379

推薦閱讀更多精彩內容

  • 關于 Swift 重要這個文檔所包含的準備信息, 是關于開發的 API 和技術的。這個信息可能會改變, 根據這個文...
    無灃閱讀 4,350評論 1 27
  • Swift 介紹 簡介 Swift 語言由蘋果公司在 2014 年推出,用來撰寫 OS X 和 iOS 應用程序 ...
    大L君閱讀 3,266評論 3 25
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 3,854評論 0 6
  • 他的情話 字字扣人心弦 讓她的心顫抖不已 她多想全身心的投入啊 如飛蛾撲火 哪怕粉身碎骨 也要盡情的再愛一次 可是...
    開花的樹樹閱讀 272評論 0 0
  • 文|無喧 最近,《歡樂頌2》火爆上映,看評論說不如第一部好,加上現在也不怎么追劇,就沒有去看了。 但是每次打開百度...
    岑思木閱讀 649評論 2 3