可選可以讓你推斷值是否存在。你可以在代碼中優雅地處理值缺失的狀況。然而,在某些狀況下,假設值缺失或者值並不知足特定的條件。你的代碼可能並不需要繼續執行。這時。你可以在你的代碼中觸發一個斷言(assertion)來結束代碼執行並經過調試來找到值缺失的緣由。less
斷言會在執行時推斷一個邏輯條件是否爲true。從字面意思來講,斷言「斷言」一個條件是否爲真。你可以使用斷言來保證在執行其它代碼以前。某些重要的條件已經被知足。函數
假設條件推斷爲true。代碼執行會繼續進行;假設條件推斷爲false。代碼執行中止,你的應用被終止。post
假設你的代碼在調試環境下觸發了一個斷言,比方你在 Xcode 中構建並執行一個應用,你可以清楚地看到不合法的狀態發生在哪裏並檢查斷言被觸發時你的應用的狀態。spa
此外。斷言贊成你附加一條調試信息。設計
你可以使用全局assert函數來寫一個斷言。調試
向assert函數傳入一個結果爲true或者false的表達式以及一條信息,當表達式爲false的時候這條信息會被顯示:code
let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因爲 age < 0。因此斷言會觸發
在這個樣例中,僅僅有age >= 0爲true的時候代碼執行纔會繼續。也就是說。當age的值非負的時候。假設age的值是負數。就像代碼中那樣,age >= 0爲false。斷言被觸發。結束應用。blog
斷言信息不能使用字符串插值。斷言信息可以省略,就像這樣:索引
assert(age >= 0)
當條件可能爲假時使用斷言,但是終於必定要保證條件爲真,這樣你的代碼才幹繼續執行。斷言的適用情景:ip
請參考附屬腳本和函數。
注意:斷言可能致使你的應用終止執行。因此你應當細緻設計你的代碼來讓非法條件不會出現。
然而。在你的應用公佈以前,有時候非法條件可能出現,這時使用斷言可以高速發現問題。