Swift語法基礎之斷言 一:使用斷言進行調試 二:何時使用斷言

上篇文章談到了可選,可選可以讓你判斷值是否存在,你可以在代碼中優雅地處理值缺失的情況。然而,在某些情況下,如果值缺失或者值並不滿足特定的條件,你的代碼可能並不需要繼續執行。這 時,你可以在你的代碼中觸發一個斷言(assertion)來結束代碼運行並通過調試來找到值 缺失的原因。

一:使用斷言進行調試

斷言會在運行時判斷一個邏輯條件是否爲 true。從字面意思來說,斷言“斷言”一個條件是否爲真。你可以使用斷言來保證在運行其他代碼之前,某些重要的條件已經被滿足。如果 條件判斷爲 true,代碼運行會繼續進行;如果條件判斷爲 false,代碼運行停止,你的應用 被終止。

如果你的代碼在調試環境下觸發了一個斷言,比如你在 Xcode 中構建並運行一個應用, 你可以清楚地看到不合法的狀態發生在哪裏並檢查斷言被觸發時你的應用的狀態。此外, 斷言允許你附加一條調試信息。

你可以使用全局 assert 函數來寫一個斷言。向 assert 函數傳入一個結果爲 true 或者 false 的表達式以及一條信息,當表達式爲 false 的時候這條信息會被顯示:

let age = -3
assert(age >= 0, "A person is age cannot be less than zero")
// 因爲 age < 0, 所以斷言會觸發

在這個例子中,只有 age >= 0 爲 true 的時候代碼運行纔會繼續,也就是說,當 age 的值 非負的時候。如果 age 的值是負數,就像代碼中那樣,age >= 0 爲 false,斷言被觸發, 結束應用。

斷言信息不能使用字符串插值。斷言信息可以省略,就像這樣:

assert( age > = 0)

二:何時使用斷言

當條件可能爲假時使用斷言,但是最終一定要保證條件爲真,這樣你的代碼才能繼續運行。斷言的適用情景:

整數的附屬腳本索引被傳入一個自定義附屬腳本實現,但是下標索引值可能太小或者太大。

需要給函數傳入一個值,但是非法的值可能導致函數不能正常執行。

一個可選值現在是 nil,但是後面的代碼運行需要一個非 nil 值。

注意:斷言可能導致你的應用終止運行,所以你應當仔細設計你的代碼來讓非法條件不會出現。然而,在你的應用發佈之前,有時候非法條件可能出現,這時使用斷言可以快速發現問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章