《從零開始學Swift》學習筆記(Day 27)——可選型別
原創文章,歡迎轉載。轉載請註明:關東昇的部落格
可選型別:
我們先看看如下程式碼:
var n1: Int = 10
n1 = nil //編譯錯誤
let str: String = nil //編譯錯誤
Int和String型別不能接受nil的,但程式執行過程中有時被複制給nil是在所難免的,Swift為每一種資料型別提供一種可選型別(optional),即在某個資料型別後面加上問號(?)或感嘆號(!),修改前文示例程式碼:
var n1: Int? = 10
n1 = nil
let str: String! = nil
Int?和String!都是原有型別Int和String可選型別,它們可以接受nil。
可選型別值拆包
在可選型別的問號(?)或感嘆號(!)究竟有什麼區別呢?這與可選型別的“拆包”(unwrapping)有關,拆包是將可選型別變成普通型別,如果我們直接列印非空的可選型別值,程式碼如下:
var n1: Int? = 10
print(n1)
輸出的結果是Optional(10),而非10。所以試圖計算表示式n1 + 100會發生編譯錯誤,程式碼如下:
var n1: Int? = 10
print(n1 + 100) //發生編譯錯誤
需要對可選型別值進行“拆包”是必要地。
“拆包”分為顯示拆包和隱性拆包。
使用問號(?)宣告的可選型別,在拆包時需要使用感嘆號(!),這種拆包方式稱為“顯式拆包”;
使用感嘆號(!)宣告的可選型別,在拆包時可以不使用感嘆號(!),這種表示方式稱為“隱式拆包”。
看看下面程式碼:
var n1: Int? = 10
print(n1! + 100) //顯式拆包
var n2: Int! = 100
print(n2 + 200) //隱式拆包
歡迎關注關東昇新浪微博@tony_關東昇。 關注智捷課堂微信公共平臺,瞭解最新技術文章、圖書、教程資訊
更多精品iOS、Cocos、移動設計課程請關注智捷課堂官方網站:http://www.zhijieketang.com 智捷課堂論壇網站:http://51work6.com/forum.php
相關文章
- python Scrapy 從零開始學習筆記(一)Python筆記
- python Scrapy 從零開始學習筆記(二)Python筆記
- PHP從零開始系列二(學習筆記):序言PHP筆記
- PHP從零開始系列一(學習筆記):前言PHP筆記
- 從零開始學Electron筆記(六)筆記
- 從零開始學Electron筆記(七)筆記
- 從零開始學Electron筆記(二)筆記
- 從零開始學Electron筆記(四)筆記
- 從零開始學Electron筆記(五)筆記
- 從零開始學Electron筆記(一)筆記
- 從零開始學Electron筆記(三)筆記
- 從零開始JAVA資料結構學習筆記(一)Java資料結構筆記
- 從零開始學習機器學習機器學習
- 從零開始學習laravelLaravel
- 從零開始學習KafkaKafka
- Swift 可選型別Swift型別
- 從零開始機器學習機器學習
- 從零開始學五筆(一):概述
- iOS學習筆記47 Swift(七)泛型iOS筆記Swift泛型
- 《Python深度學習從零開始學》簡介Python深度學習
- 從零開始學習C++(0)C++
- 從零開始學習 Go ——安裝Go
- 從零開始機器學習-03機器學習
- 從零開始機器學習--4機器學習
- 從零開始機器學習--05機器學習
- swift學習筆記《1》Swift筆記
- swift學習筆記《4》Swift筆記
- 從零開始的Unity個人學習日記(二)Unity
- 從零開始學GO ---- (1) 變數、常量、基本資料型別Go變數資料型別
- Go型別特性-學習筆記Go型別筆記
- 從零開始學機器學習——入門NLP機器學習
- 從零開始學機器學習——瞭解聚類機器學習聚類
- 《谷歌JAX深度學習從零開始學》簡介谷歌深度學習
- 從零開始學PythonPython
- swift學習筆記《2》-swift語法Swift筆記
- 從頭開始的Java學習Day05Java
- 從零開始學習邏輯迴歸邏輯迴歸
- 從零開始學習 React 高階元件React元件
- 從零開始學習如何部署程式碼