以往我們實現debug
函式,一般都是直接使用 compile flag (也就是編譯巨集)去實現的:
func
debug
(_ action: ()
-> void)
複製**
但這種方式需要修改工程檔案的設定,而且離開了 xcode 就不能很好地使用。
今天看vapor 的原始碼時看到了乙個很巧妙的實現:
func
debugonly
(_ body: ()
-> void) ())
}複製**
這是assert
函式的宣告:
func
assert
( _ condition: @autoclosure ()
-> bool,
_ message: @autoclosure () -> string = default,
file: staticstring = #file,
line: uint = #line
)複製**
condition
由於@autoclosure
的標記會把傳入的值自動裝到閉包裡,然後只有在 debug 模式下才會執行並且求值,通過這種方式就可以很完美地實現乙個debugonly
函式。
覺得文章還不錯的話可以關注一下我的部落格
如何巧妙地使用遞迴
以下三個條件需同時滿足 ref 乙個問題的解可以分解為幾個子問題的解 子問題與原問題除了資料規模不一樣,求解思路完全一樣 存在遞迴終止條件 兩步走 寫出遞推公式 大問題化小問題 找到終止條件 計算機擅長做重複的事情,但是人腦不是。如果看到遞迴,總是想著一層一層地遞迴展開,然後再一層一層地返回,人腦很...
如何巧妙地使用遞迴
以下三個條件需同時滿足 ref 乙個問題的解可以分解為幾個子問題的解 子問題與原問題除了資料規模不一樣,求解思路完全一樣 存在遞迴終止條件 兩步走 寫出遞推公式 大問題化小問題 找到終止條件 計算機擅長做重複的事情,但是人腦不是。如果看到遞迴,總是想著一層一層地遞迴展開,然後再一層一層地返回,人腦很...
2 5 2 如何巧妙地推動愛
這也就是今天我們將主要講述到的內容。如何讓你愛的人愛上你?在這部分裡,我們會講兩個要素,第二要素是相似的個性,互補的需求,第三要素是自尊。這兩者,也是促成愛情的不可缺少的要素。2 相似的個性,互補的需求 原書中有一句話 如果人們在自己周圍建立乙個蠶繭,並和那個與自己一致的人共同居住在那裡時,就會覺得...