国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于swift的可選值(optional)

2019-11-14 19:37:56
字體:
來源:轉載
供稿:網友

關于可選值optional

 

不同于OC,swift引入了一個新的概念——可選值,了解這個optional,對于swift的學習至關重要

概念定義:可以有值也可以沒有值(nil)的一個類型。換句話說,它有兩個狀態:有值,沒有值(nil)

按我的理解,可選值是帶有布爾類型加持的普通類型

如何定義一個可選值呢?

上面的代碼簡單定義了一個叫做optionalValue的可選值。

和普通的變量定義沒有太大區別,唯一不同在于,這里多了一個問號,?是對普通值的封包 要加在類型后面,也就是說,在變量或者常量的所屬類型后面加一個問號就可以將其定義為一個optional

這里我給它賦值80,如果不賦值,那么它默認將是nil

 

可選值的強制解包forced unwrapping

 

通過在類型后面加一個問號,可以將這個變量或常量變為可選值,那么反過來要怎么做呢?

swift提供了解包操作,只需在可選值后面加一個嘆號,就可以將可選值強制解包

據說,帶有強制性質的事,都不是什么好事,于是問題來了……

上面的代碼中,我創建了一個optional變量,沒有賦值,那默認就是nil

在第二行當我試圖將這個optional解包時,出現了錯誤。

原來,nil的可選值解包時候會出現錯誤,蘋果的官方文檔也強調,如果你不100%確信這個可選值有值,那么不要用強制解包

 

可選值綁定Optional Binding

 

既然強制解包在可選值為nil的時候會報錯,那怎么將可選值里的數據讀取出來呢?

swift提供了一個更加安全的方法——可選值綁定Optional Binding

上面是官方文檔提供的用法,不太明確,下面是代碼演示:

上面的代碼中,我先定義了一個可選值字符串,賦值為90,然后用optional binding創建一個叫做tempValue的常量,if語句會根據tempValue是否從optionalValue中獲取了值來決定是否要來打印出這個值,playground的結果顯示這個tempValue被賦予了“90”

而當我不給可選值賦值,讓它默認為nil的時候,打印tempValue也沒有報錯,if判斷tempValue沒有從optionValue中獲取值,就什么也沒有做,當然也不會報錯。

這就相當于給可選值找了一個中間人,間接判斷并讀取可選值中的內容,在不確定當前可選值時否為nil的情況下,蘋果官方推薦用這個方式判斷可選值是否為nil并嘗試獲取可選值的數據。

 

更多內容請訪問 http://www.survivalescaperooms.com/updating/ 轉載請注明出處

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲麻莱县| 闻喜县| 庆安县| 阆中市| 犍为县| 旬阳县| 正蓝旗| 玉溪市| 易门县| 康乐县| 湘潭市| 霍城县| 平顺县| 德惠市| 靖江市| 弋阳县| 阿巴嘎旗| 龙岩市| 镇沅| 谢通门县| 渝北区| 太原市| 西丰县| 望江县| 志丹县| 瑞昌市| 南川市| 兴隆县| 峡江县| 林芝县| 康乐县| 佛教| 淮安市| 六安市| 安溪县| 北安市| 六盘水市| 邳州市| 宁德市| 赫章县| 克山县|