麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設計 > 正文

關于swift的可選值(optional)

2019-11-14 19:37:56
字體:
來源:轉載
供稿:網(wǎng)友

關于可選值optional

 

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

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

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

如何定義一個可選值呢?

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

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

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

 

可選值的強制解包forced unwrapping

 

通過在類型后面加一個問號,可以將這個變量或常量變?yōu)榭蛇x值,那么反過來要怎么做呢?

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

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

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

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

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

 

可選值綁定Optional Binding

 

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

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

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

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

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

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

 

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

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: freexxx69性欧美hd | 国产精品久久久久影院老司 | 久久久久久久亚洲视频 | 把娇妻调教成暴露狂 | 欧美福利视频一区二区 | 水多视频在线观看 | 97超视频在线观看 | 欧美综合成人 | 国产一区二区午夜 | 黄色特级视频 | 久久亚洲视频网 | 亚洲综合无码一区二区 | 黄在线 | 国产在线免 | 午夜色视频在线观看 | 欧美一级毛片一级毛片 | 国产精品99一区二区 | 毛片午夜 | 国产亚洲精品久久午夜玫瑰园 | 成人羞羞网站入口 | 国产精品久久久久久久亚洲按摩 | 国产99精品视频 | 国产精品麻豆91 | 久久成人视屏 | 国产成年人网站 | 91精品国产综合久久婷婷香 | av电影网站在线 | www.91tv| 欧美日韩免费一区 | 99精品国产在热久久婷婷 | 黄色aaa视频| 国产精品久久久久久久久久 | 久久国产精品久久久久久久久久 | 国产亚洲精品综合一区91 | 九九久久视频 | 欧美日韩亚洲另类 | av在线播放网址 | 激情网站在线观看 | 羞羞羞网站 | 成人一区二区三区在线 | 久久中文免费 |