Swift程式語言學習1 7 斷言

2021-09-07 17:57:33 字數 1184 閱讀 7796

斷言

可選能夠讓你推斷值是否存在,你能夠在**中優雅地處理值缺失的情況。然而,在某些情況下,假設值缺失或者值並不滿足特定的條件,你的**可能並不須要繼續執行。這時。你能夠在你的**中觸發乙個斷言(assertion)來結束**執行並通過除錯來找到值缺失的原因。

使用斷言進行除錯

斷言會在執行時推斷乙個邏輯條件是否為true。從字面意思來說,斷言「斷言」乙個條件是否為真。你能夠使用斷言來保證在執行其它**之前,某些重要的條件已經被滿足。假設條件推斷為true,**執行會繼續進行;假設條件推斷為false。**執行停止。你的應用被終止。

假設你的**在除錯環境下觸發了乙個斷言,比方你在 xcode 中構建並執行乙個應用,你能夠清楚地看到不合法的狀態發生在**並檢查斷言被觸發時你的應用的狀態。此外,斷言同意你附加一條除錯資訊。

你能夠使用全域性assert函式來寫乙個斷言。

向assert函式傳入乙個結果為true或者false的表示式以及一條資訊,當表示式為false的時候這條資訊會被顯示:

let age = -3

assert(age >= 0, "a person's agecannot be less than zero")

// 由於 age < 0。所以斷言會觸發

在這個樣例中,僅僅有age >= 0為true的時候**執行才會繼續,也就是說,當age的值非負的時候。假設age的值是負數,就像**中那樣,age >= 0為false,斷言被觸發,結束應用。

斷言資訊不能使用字串插值。

斷言資訊能夠省略。就像這樣:

assert(age >= 0)
何時使用斷言

當條件可能為假時使用斷言,可是終於一定要保證條件為真,這樣你的**才幹繼續執行。

斷言的適用情景:

整數的附屬指令碼索引被傳入乙個自己定義附屬指令碼實現。可是下標索引值可能太小或者太大。

須要給函式傳入乙個值。可是非法的值可能導致函式不能正常執行。

乙個可選值如今是nil。可是後面的**執行須要乙個非nil值。

請參考附屬指令碼和函式。

注意:斷言可能導致你的應用終止執行,所以你應當細緻設計你的**來讓非法條件不會出現。然而,在你的應用公布之前,有時候非法條件可能出現,這時使用斷言能夠高速發現問題。

Swift程式語言學習1 6 可選值

可選值 使用可選 optionals 來處理值可能缺失的情況。可選表示 有值,等於 x 或者沒有值 注意 c 和 objective c 中並沒有可選這個概念。最接近的是 objective c 中的乙個特性,乙個方法要不返回乙個物件要不返回nil,nil表示 缺少乙個合法的物件 然而,這僅僅對物件...

C語言學習筆記 17

1.聯結器 c語言有個思想是分別編譯,也就是把乙個c語言的專案分成若干個源程式,讓他們在不同的時候單獨進行編譯,然後在恰當的時候整合到一起。這個整合的過程就是由聯結器完成的。大多數時候,聯結器和編譯器都是分開的,聯結器本身並不懂得太多c語言的語法規則。因為他一般不與c直接接觸,我們想想之前說過c語言...

C語言學習筆記17

define crt secure no warnings 1 include intmain int p arr 如果寫char 呢 int i 0 for i 0 i 10 i return0 野指標 1 指標未初始化 如果不知道賦值什麼,就賦值null空指標 null 用來初始化指標的,給指標...