swift學習 關於斷言

2021-06-22 15:42:40 字數 1176 閱讀 4670

摘錄自:

斷言

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

使用斷言進行除錯

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

如果你的**在除錯環境下觸發了乙個斷言,比如你在 xcode 中構建並執行乙個應用,你可以清楚地看到不合法的狀態發生在**並檢查斷言被觸發時你的應用的狀態。此外,斷言允許你附加一條除錯資訊。

你可以使用全域性assert函式來寫乙個斷言。向assert函式傳入乙個結果為true或者false的表示式以及一條資訊,當表示式為false的時候這條資訊會被顯示:

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,斷言被觸發,結束應用。

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

assert(age >= 0) 

何時使用斷言

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

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

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

- 乙個可選值現在是nil,但是後面的**執行需要乙個非nil值。

請參考附屬指令碼和函式

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

Swift程式語言學習1 7 斷言

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

Jmeter關於斷言

duration to assert 允許的響應時間的最大值 如果響應時間大於設定的最大值,則斷言不通過,如上圖,如果響應時間大於10毫秒,則斷言不通過 size to assert 判斷返回檔案內容的大小 可以設定返回的結果檔案是等於大於等於指定位元組來判斷是否通過,如上圖,如果返回的位元組數大於...

Swift隱式解析,可選,斷言

swift 可選 注意 c 和objective c 中並沒有可選這個概念。最接近的是 objective c 中的乙個特性,乙個方法要不返回乙個物件要不返回 nil,nil表示 缺少乙個合法的物件 然而,這只對物件起作用 對於結構體,基本的 c 型別或者列舉型別不起作用。對於這些型別,object...