《從零開始學Swift》學習筆記(Day 27)——可選類型

原創文章,歡迎轉載。轉載請註明:關東昇的博客  php

可選類型:java

咱們先看看以下代碼:微信

var n1: Int = 10
n1 = nil         //編譯錯誤
 
let str: String = nil    //編譯錯誤

IntString類型不能接受nil的,但程序運行過程當中有時被複制給nil是在所不免的,Swift爲每一種數據類型提供一種可選類型(optional),即在某個數據類型後面加上問號(?)或感嘆號(!),修改前文示例代碼:app

var n1: Int? = 10
n1 = nil
 
let str: String! = nil

Int?String!都是原有類型IntString可選類型,它們能夠接受nil網站

 

可選類型值拆包spa

在可選類型的問號(?)或感嘆號(!)究竟有什麼區別呢?這與可選類型的「拆包」(unwrapping)有關,拆包是將可選類型變成普通類型,若是咱們直接打印非空的可選類型值,代碼以下:.net

var n1: Int? = 10
print(n1)

輸出的結果是Optional(10),而非10。因此試圖計算表達式n1 + 100會發生編譯錯誤,代碼以下:設計

var n1: Int? = 10
print(n1 + 100)      //發生編譯錯誤

須要對可選類型值進行「拆包」是必要地。code

「拆包」分爲顯示拆包和隱性拆包。教程

使用問號(?)聲明的可選類型,在拆包時須要使用感嘆號(!),這種拆包方式稱爲「顯式拆包」;

使用感嘆號(!)聲明的可選類型,在拆包時能夠不使用感嘆號(!),這種表示方式稱爲「隱式拆包」。

看看下面代碼:

var n1: Int? = 10
print(n1! + 100)     //顯式拆包
 
var n2: Int! = 100       
print(n2 + 200)          //隱式拆包

 

 

 

歡迎關注關東昇新浪微博@tony_ 關東昇。
關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息
 

更多精品iOSCocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com
智捷課堂論壇網站:http://51work6.com/forum.php

相關文章
相關標籤/搜索