前言
通過多年的積累,如今的小明已經可以對各類複雜的代碼遊刃有餘,但是複雜代碼真的好嗎,小明不覺得然。以簡潔代碼爲己任的小明決定再次潛心研究。下面小明將介紹一種C++11中新增的特性來簡化代碼——Lambda函數。web
實戰
想必使用過Java和Python的同窗都使用過Lambda函數。那就來看一下在C++中Lambda函數是怎樣簡化編程工做的。編程
首先看一下Lambda的語法形式:微信
[捕獲說明符](函數參數) mutable/exception聲明 ->返回值類型 {函數體}函數
下面分別進行介紹
測試
捕獲說明符this
[] 不捕獲任何變量url
[&] 捕獲外部做用域中全部變量,並做爲引用在函數體中使用spa
[=] 捕獲外部做用域中全部變量,並拷貝一份在函數體中使用.net
[this] 捕獲當前類中的this指針指針
[a, &b] a按值傳遞,b按引用傳遞
2. 函數參數 與命名函數同樣。
3. mutable 容許函數體修改傳值進來的形參,以及調用它們的非const成員函數
exception 指定函數拋出的異常
4. ->返回值類型 表示函數返回值的類型,當返回void,或者函數體中只有一處return時,能夠省略。
5. 函數體,標識函數的實現,不能省略。
這裏以一個例子介紹Lambda函數的使用。
在使用Sort函數進行排序時,能夠經過比較函數來指定不一樣的排序方式,例如按絕對值的升序排列,若是比較函數較爲簡單,只在Sort函數中使用,不須要在別處使用,又不想爲函數命名花費時間,那麼Lambda函數就是最好的選擇。它限制了別人的訪問,更私有,爲了更易的代碼和更方便的編程。固然,還有for_each和Lambda函數是一個很是完美的結合。
後續
小明的精彩故事還在繼續,有你的關注咱們將繼續和你們介紹一些咱們作白盒測試的一些經驗和踩過的一些坑。
想看以前的系列文章?發送「搜:獨步武林」到「搜狗測試」公衆號就能夠搜索到。
本文分享自微信公衆號 - 搜狗測試(SogouQA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。