標籤:swift swift基礎 調試 debugging
Assertions 斷言
可選可以讓你判斷值是否存在,你可以在代碼中優雅地處理值缺失的情況。然而,在某些情況下,如果值缺失或者值並不滿足特定的條件,你的代碼可能並不需要繼續執行。這時,你可以在你的代碼中觸發一個斷言(assertion)來結束代碼運行並通過調試來找到值缺失的原因。
Debugging with Assertions 使用斷言進行調試
斷言會在運行時判斷一個邏輯條件是否為true。從字面意思來說,斷言“斷言”一個條件是否為真。你可以使用斷言來保證在運行其他代碼之前,某些重要的條件已經被滿足。如果條件判斷為true,代碼運行會繼續進行;如果條件判斷為false,代碼運行停止,你的應用被終止。
如果你的代碼在調試環境下觸發了一個斷言,比如你在 Xcode 中構建並運行一個應用,你可以清楚地看到不合法的狀態發生在哪裡並檢查斷言被觸發時你的應用的狀態。此外,斷言允許你附加一條調試資訊。
你可以使用全域assert函數來寫一個斷言。向assert函數傳入一個結果為true或者false的運算式以及一條資訊,當運算式為false的時候這條資訊會被顯示:
let age = -3assert(age >= 0, "A person's age cannot be less than zero")// this causes the assertion to trigger, because age is not >= 0
在這個例子中,只有age >= 0為true的時候代碼運行才會繼續,也就是說,當age的值非負的時候。如果age的值是負數,就像代碼中那樣,age >= 0為false,斷言被觸發,結束應用。
斷言資訊不能使用字串插值。斷言資訊可以省略,就像這樣:
assert(age >= 0)
When to Use Assertions 什麼時候使用斷言
當條件可能為假時使用斷言,但是最終一定要保證條件為真,這樣你的代碼才能繼續運行。斷言的適用情景:
- 整數的附屬指令碼索引被傳入一個自訂附屬指令碼實現,但是下標索引值可能太小或者太大。
- 需要給函數傳入一個值,但是非法的值可能導致函數不能正常執行。
- 一個可選值現在是nil,但是後面的代碼運行需要一個非nil值。
好的,上面的就是Swift學習第一章的全部內容了,基礎部分----The Basics
下面是第一章內容的全部翻譯文章連結:
Swift學習——Swift基礎詳解(一)
Swift學習——Swift基礎詳解(二)
Swift學習——Swift基礎詳解(三)
Swift學習——Swift基礎詳解(四)
Swift學習——Swift基礎詳解(五)
Swift學習——Swift基礎詳解(六)
Swift學習——Swift基礎詳解(七)
Swift學習——Swift基礎詳解(八)
Swift學習——Swift基礎詳解(八)