Swift學(xué)習(xí)系列 可選類型的使用

什么是可選類型

Swift 定義后綴 ? 來作為標(biāo)準(zhǔn)庫中的定義的命名型類型 Optional<Wrapped> 的語法糖。
換句話說粥庄,下面兩個(gè)聲明是等價(jià)的:

var optionalInteger: Int?
var optionalInteger: Optional<Int>

在上述兩種情況下丧失,變量 optionalInteger 都被聲明為可選整型類型。注意在類型和 ? 之間沒有空格惜互。

為什么產(chǎn)生可選類型

Swift 的 Int 類型有一種構(gòu)造器布讹,作用是將一個(gè) String 值轉(zhuǎn)換成一個(gè) Int 值。然而训堆,并不是所有的字符串都可以轉(zhuǎn)換成一個(gè)整數(shù)描验。字符串 "123" 可以被轉(zhuǎn)換成數(shù)字 123 ,但是字符串 "hello, world" 不行坑鱼。
下面的例子使用這種構(gòu)造器來嘗試將一個(gè) String 轉(zhuǎn)換成 Int:

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber 被推測(cè)為類型 "Int?"膘流, 或者類型 "optional Int"

因?yàn)樵摌?gòu)造器可能會(huì)失敗,所以它返回一個(gè)可選類型(optional)Int姑躲,而不是一個(gè) Int睡扬。一個(gè)可選的 Int 被寫作 Int? 而不是 Int。問號(hào)暗示包含的值是可選類型黍析,也就是說可能包含 Int 值也可能不包含值卖怜。(不能包含其他任何值比如 Bool 值或者 String 值。只能是 Int 或者什么都沒有阐枣。)

定義可選類型

如何證明可選類型也是一種類型马靠?
可選類型有這樣一個(gè)特點(diǎn):可以賦值為nil。在swift中的nil 不等同于OC里的nil蔼两,swift中的nil就是一個(gè)特殊含義的字符甩鳄。表示沒有值《罨可選代表的含義是可能有值妙啃,也可能沒有值。
非可選,代表無論在什么時(shí)候揖赴,在哪里 都有值馆匿。舉個(gè)例子:

var serverResponseCode: Int? = 404
// serverResponseCode 包含一個(gè)可選的 Int 值 404
serverResponseCode = nil
// serverResponseCode 現(xiàn)在不包含值

    let num:Optional<Int> = 2
    
    print(num as Any)
        
//        num + = 2//不允許  類型不匹配
        
    print(num as Any)
        
    let num2:Int? = 3
        print(num2 as Any)
        

可選類型的使用

可選類型的使用
  • 賦值操作
//賦值操作      
var n: Int? = 0
n = 1
print(n!)
//! 含義 代表 強(qiáng)制解包
//? 代表可選類型 (包裝了其他類型)如果想解包 必須取出其中的其他類型
//n! 代表強(qiáng)制從麻袋里面取東西出來 要求:肯定可以拿到東西
let m =  n! + 1
print (m)
//上面的n!不是肯定有值的  因?yàn)榭蛇x類型是可以為nil的
  • 取值操作
//如果以后想要使用可選類型的值 應(yīng)該怎么做
 //1、第一種寫法
        
    var num:Int? = 0
        
    num = nil
        
    num = 2
    
    if num != nil{
            
    print(num! + 1)
            
    }

這里我們需要對(duì)可選類型的值進(jìn)行非空判斷燥滑。然后才能使用它渐北。

//第二種寫法  可選綁定
        
//首先判斷 num 是否為nil  如果是 那么if  后面的值 = false
        // 如果 num !=nil  if  后面的值 = true 還會(huì)把num 強(qiáng)制解包  把解包后的值 賦值給result
        
    if let result = num {
            
    print (result + 1)
            
    }
    //第三種寫法
    
     var score: Int? = 0
    guard let s = score else {
            
    print("為空")
    return
    }
    print(s + 1)

    //第四種寫法
    var score: Int? = 0
   
     if score == nil {
            
    print("為空")
            
     return
     }
     
    print(score + 1) 
        

真實(shí)使用場(chǎng)景

使用場(chǎng)景

真實(shí)的使用會(huì)在以后的文章中詳細(xì)闡述。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铭拧,一起剝皮案震驚了整個(gè)濱河市赃蛛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搀菩,老刑警劉巖呕臂,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秕磷,居然都是意外死亡诵闭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門澎嚣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疏尿,“玉大人,你說我怎么就攤上這事易桃∪焖觯” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵晤郑,是天一觀的道長(zhǎng)敌呈。 經(jīng)常有香客問我,道長(zhǎng)造寝,這世上最難降的妖魔是什么磕洪? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮诫龙,結(jié)果婚禮上析显,老公的妹妹穿的比我還像新娘。我一直安慰自己签赃,他們只是感情好谷异,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著锦聊,像睡著了一般歹嘹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孔庭,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天尺上,我揣著相機(jī)與錄音,去河邊找鬼。 笑死尖昏,一個(gè)胖子當(dāng)著我的面吹牛仰税,可吹牛的內(nèi)容都是我干的构资。 我是一名探鬼主播抽诉,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吐绵!你這毒婦竟也來了迹淌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤己单,失蹤者是張志新(化名)和其女友劉穎唉窃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纹笼,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纹份,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廷痘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔓涧。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖笋额,靈堂內(nèi)的尸體忽然破棺而出元暴,到底是詐尸還是另有隱情,我是刑警寧澤兄猩,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布茉盏,位于F島的核電站,受9級(jí)特大地震影響枢冤,放射性物質(zhì)發(fā)生泄漏鸠姨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一淹真、第九天 我趴在偏房一處隱蔽的房頂上張望讶迁。 院中可真熱鬧,春花似錦趟咆、人聲如沸添瓷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鳞贷。三九已至,卻和暖如春虐唠,著一層夾襖步出監(jiān)牢的瞬間搀愧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咱筛,地道東北人搓幌。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迅箩,于是被迫代替她去往敵國(guó)和親溉愁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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