6.4 問號(hào)?和感嘆號(hào)!的用法解析 [Swift教程]

1. 和別的語(yǔ)言不同,系統(tǒng)不會(huì)自動(dòng)給變量設(shè)置初始值马绝,也就是說變量不會(huì)有默認(rèn)值。所以在使用變量之前需要進(jìn)行初始化束凑,否則就會(huì)出錯(cuò)晒旅。

2. 利用泛型定義一個(gè)Optional類型的變量,從右側(cè)可以看出汪诉,它是空值废恋,沒有初始值。Optional其實(shí)是個(gè)枚舉扒寄,里面有None和Some兩種類型鱼鼓,用來包裝原始值。

3. 定義一個(gè)可選類型的字符串變量旗们,從右側(cè)的結(jié)果可以看出蚓哩,它的值也是空值。

4. 定義一個(gè)字符串類型的變量上渴。

5. 由于該變量的值為空岸梨,所以出現(xiàn)錯(cuò)誤提示,需要對(duì)變量進(jìn)行初始化操作稠氮。接著對(duì)這兩行代碼進(jìn)行修改曹阔。

6. 兩行代碼各增加了一個(gè)問號(hào)。前一個(gè)問號(hào)的作用是聲明一個(gè)Optional變量隔披,后一個(gè)問號(hào)的作用是赃份,在對(duì)Optional值操作時(shí),判斷是否可以響應(yīng)后面的操作奢米。

7. 因?yàn)樽兞康闹禐榭兆ズ詿o法執(zhí)行第14行代碼中的第一個(gè)問號(hào)后面的代碼。此時(shí)雙問號(hào)就發(fā)揮了作用鬓长,當(dāng)前面的代碼無法執(zhí)行時(shí)谒拴,就采用雙問號(hào)后面的值。

8. 將第17行中的第一個(gè)問號(hào)涉波,修改為感嘆號(hào)英上,此時(shí)也出現(xiàn)了錯(cuò)誤提示,這是因?yàn)楦袊@號(hào)會(huì)對(duì)左側(cè)的Optional值進(jìn)行拆包(從枚舉里面取出來原始值)啤覆。

9. 繼續(xù)定義一個(gè)可選變量苍日。

10. 這次我們給這個(gè)變量賦予一個(gè)初始值。

11. 此時(shí)再使用感嘆號(hào)窗声,對(duì)被Optional包裹的變量進(jìn)行拆包相恃,現(xiàn)在已經(jīng)可以在右側(cè)正常顯示它的值了,并且沒有被Optional包裹嫌佑。

12. 如果將感嘆號(hào)更改為問號(hào)豆茫,也可以正常獲取它的值侨歉,但是因?yàn)闆]有拆包的原因,所以它的值會(huì)被Optional包裹揩魂。

13. 如果一定要使用問號(hào)幽邓,也可以給它補(bǔ)充一個(gè)默認(rèn)值,點(diǎn)擊此處的修復(fù)按鈕火脉,添加一個(gè)默認(rèn)值牵舵。

14. 此時(shí)會(huì)出現(xiàn)一對(duì)問號(hào),然后在問號(hào)的后方輸入當(dāng)變量的值為空時(shí)倦挂,選用該默認(rèn)值畸颅。

15. 此時(shí)右側(cè)可以正常顯示結(jié)果了。

16. 傳統(tǒng)的空值判斷方援,通常要使用if語(yǔ)句没炒,代碼量比較大,而使用問號(hào)和感嘆號(hào)犯戏,則可以很簡(jiǎn)潔的進(jìn)行空值的判斷送火。下面就是一個(gè)空值判斷的示例。

17. 此時(shí)已經(jīng)定義了兩個(gè)類先匪,并給兩個(gè)類都添加一個(gè)Optional屬性种吸。

18. 繼續(xù)給第二個(gè)類添加一個(gè)寵物類Optional屬性。

19. 初始化第二個(gè)類的實(shí)例對(duì)象呀非。

20. 打印該對(duì)象的寵物屬性坚俗,因?yàn)樵搶傩詻]有初始值,所以在本行代碼的右側(cè)實(shí)時(shí)反饋區(qū)岸裙,顯示它的值為空猖败。

21. 如果需要訪問寵物屬性的名稱屬性,則在寵物屬性之后添加一個(gè)問號(hào)降允,然后再訪問名稱屬性辙浑,這樣當(dāng)寵物屬性的值為空時(shí),直接返回空值拟糕,不再嘗試獲取名稱屬性。

22. 這樣使用一行代碼倦踢,就完成了通常需要使用多行if語(yǔ)句進(jìn)行空值判斷的功能送滞。接著對(duì)寵物屬性進(jìn)行初始化。

23. 打印該對(duì)象的寵物屬性辱挥,因?yàn)樵搶傩砸呀?jīng)擁有初始值犁嗅,所以在本行代碼的右側(cè)實(shí)時(shí)反饋區(qū),顯示了它當(dāng)前的值晤碘。

24. 接著使用相同的方式褂微,獲取寵物的名稱屬性功蜓,因?yàn)槊Q屬性沒有初始值,所以右側(cè)顯示的結(jié)果為空宠蚂。

25. 給寵物的名稱屬性設(shè)置一個(gè)值式撼。

26. 最后再嘗試獲取寵物的名稱屬性時(shí),右側(cè)的實(shí)時(shí)反饋區(qū)已經(jīng)能夠正常顯示名稱屬性的值了求厕。

本文整理自:《Swift4互動(dòng)教程》著隆,真正的[手把手]教學(xué)模式,用最快的速度上手iOS開發(fā)和Swift語(yǔ)言呀癣,蘋果商店App Store免費(fèi)下載:https://itunes.apple.com/cn/app/id1320746678美浦,或掃描本頁(yè)底部的二維碼。課程配套素材下載地址:資料下載

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末项栏,一起剝皮案震驚了整個(gè)濱河市浦辨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沼沈,老刑警劉巖流酬,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異庆冕,居然都是意外死亡康吵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門访递,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晦嵌,“玉大人,你說我怎么就攤上這事拷姿〔言兀” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵响巢,是天一觀的道長(zhǎng)描滔。 經(jīng)常有香客問我,道長(zhǎng)踪古,這世上最難降的妖魔是什么含长? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮伏穆,結(jié)果婚禮上拘泞,老公的妹妹穿的比我還像新娘。我一直安慰自己枕扫,他們只是感情好陪腌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般诗鸭。 火紅的嫁衣襯著肌膚如雪染簇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天强岸,我揣著相機(jī)與錄音锻弓,去河邊找鬼。 笑死请唱,一個(gè)胖子當(dāng)著我的面吹牛弥咪,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播十绑,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼聚至,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了本橙?” 一聲冷哼從身側(cè)響起扳躬,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎甚亭,沒想到半個(gè)月后贷币,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡亏狰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年役纹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暇唾。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡促脉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出策州,到底是詐尸還是另有隱情瘸味,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布够挂,位于F島的核電站旁仿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏孽糖。R本人自食惡果不足惜枯冈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望办悟。 院中可真熱鬧霜幼,春花似錦、人聲如沸誉尖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铡恕。三九已至琢感,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間探熔,已是汗流浹背驹针。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诀艰,地道東北人柬甥。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像其垄,于是被迫代替她去往敵國(guó)和親苛蒲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)部分(The Basics) 當(dāng)推斷浮點(diǎn)數(shù)的類型時(shí)绿满,Swift 總是會(huì)選擇Double而不是Float臂外。 結(jié)合...
    gamper閱讀 1,286評(píng)論 0 7
  • 參考資源《swifter》https://github.com/iOS-Swift-Developers/Swif...
    柯浩然閱讀 1,447評(píng)論 0 6
  • 官方文檔 初始化 Initialization是為準(zhǔn)備使用類,結(jié)構(gòu)體或者枚舉實(shí)例的一個(gè)過程喇颁。這個(gè)過程涉及了在實(shí)例里...
    hrscy閱讀 1,136評(píng)論 0 1
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,805評(píng)論 1 10
  • 不到荊州漏健,怎知荊州. 城外驛亭孤客,疏落晚風(fēng)中. 高樓臺(tái)上橘霎,胡琴聲里蔫浆,弦催人斷腸. 對(duì)月飲鳩幾盞,眉梢卻微涼. 風(fēng)...
    宏祥君的詩(shī)和遠(yuǎn)方閱讀 93評(píng)論 0 0