Swift可选绑定、断言
原文鏈接:http://www.jianshu.com/p/d14608b72088
著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標(biāo)注“簡書作者”。
可選綁定 (optional binding)
使用可選綁定(optional binding)來判斷可選類型是否包含值,如果包含就把值賦給一個臨時常量或者變量。可選綁定可以用在if和while語句中來對可選類型的值進(jìn)行判斷并把值賦給一個常量或者變量。
像下面這樣在if語句中寫一個可選綁定:
if let constantName = someOptional { statements }你可以像上面這樣使用可選綁定來重寫possibleNumber這個例子:
if let actualNumber = possibleNumber.toInt() {println("\\(possibleNumber)has an integer value of\\(actualNumber)") }else {println("\\(possibleNumber)could not be converted to an integer") } // 輸出 "123 has an integer value of 123"這段代碼可以被理解為:
“如果possibleNumber.toInt返回的可選Int包含一個值,創(chuàng)建一個叫做actualNumber的新常量并將可選包含的值賦給它。”
如果轉(zhuǎn)換成功,actualNumber常量可以在if語句的第一個分支中使用。它已經(jīng)被可選類型包含的值初始化過,所以不需要再使用!后綴來獲取它的值。在這個例子中,actualNumber只被用來輸出轉(zhuǎn)換結(jié)果。
你可以在可選綁定中使用常量和變量。如果你想在if語句的第一個分支中操作actualNumber的值,你可以改成if var actualNumber,這樣可選類型包含的值就會被賦給一個變量而非常量。
斷言 (assert)
可選類型可以讓你判斷值是否存在,你可以在代碼中優(yōu)雅地處理值缺失的情況。然而,在某些情況下,如果值缺失或者值并不滿足特定的條件,你的代碼可能沒辦法繼續(xù)執(zhí)行。這時,你可以在你的代碼中觸發(fā)一個斷言(assertion)來結(jié)束代碼運行并通過調(diào)試來找到值缺失的原因。
使用斷言進(jìn)行調(diào)試
斷言會在運行時判斷一個邏輯條件是否為true。從字面意思來說,斷言“斷言”一個條件是否為真。你可以使用斷言來保證在運行其他代碼之前,某些重要的條件已經(jīng)被滿足。如果條件判斷為true,代碼運行會繼續(xù)進(jìn)行;如果條件判斷為false,代碼運行停止,你的應(yīng)用被終止。
如果你的代碼在調(diào)試環(huán)境下觸發(fā)了一個斷言,比如你在 Xcode 中構(gòu)建并運行一個應(yīng)用,你可以清楚地看到不合法的狀態(tài)發(fā)生在哪里并檢查斷言被觸發(fā)時你的應(yīng)用的狀態(tài)。此外,斷言允許你附加一條調(diào)試信息。
你可以使用全局assert函數(shù)來寫一個斷言。向assert函數(shù)傳入一個結(jié)果為true或者false的表達(dá)式以及一條信息,當(dāng)表達(dá)式為false的時候這條信息會被顯示:
let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因為 age在這個例子中,只有age >= 0為true的時候,即age的值非負(fù)的時候,代碼運行才會繼續(xù)。如果age的值是負(fù)數(shù),就像代碼中那樣,age >= 0為false,斷言被觸發(fā),結(jié)束應(yīng)用。
斷言信息如果不需要,可以被省略,就像這樣:
何時使用斷言
當(dāng)條件可能為假時使用斷言,但是最終一定要保證條件為真,這樣你的代碼才能繼續(xù)運行。斷言的適用情景:
- 整數(shù)類型的下標(biāo)索引被傳入一個自定義下標(biāo)腳本實現(xiàn),但是下標(biāo)索引值可能太小或者太大。
- 需要給函數(shù)傳入一個值,但是非法的值可能導(dǎo)致函數(shù)不能正常執(zhí)行。
- 一個可選值現(xiàn)在是nil,但是后面的代碼運行需要一個非nil值。
請參考下標(biāo)腳本和函數(shù)。
注意:
斷言可能導(dǎo)致你的應(yīng)用終止運行,所以你應(yīng)當(dāng)仔細(xì)設(shè)計你的代碼來讓非法條件不會出現(xiàn)。然而,在你的應(yīng)用發(fā)布之前,有時候非法條件可能出現(xiàn),這時使用斷言可以快速發(fā)現(xiàn)問題。
總結(jié)
以上是生活随笔為你收集整理的Swift可选绑定、断言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Xcode7 UI自动化测试详解 带de
- 下一篇: swift语言新特性:可选值