C++里為什麼要添加lambda?是C++本身的什麼問題造成的?


沒有 lambda 的話,& 里的那些東西放著幾乎就是擺設。


C++的思想一直都是儘可能多地支持各種編程範式,而函數式編程越來越變得流行,C++從中吸取一些思想及範式也是非常正常的一件事。lambda的出現也是為了對函數式編程提供更好的,更自然的支持。

C++本身的問題是:沒有lambda的話,函數對象的定義太麻煩了!你得定義一個類,重載operator(),然後再創建這個類的實例……所以lambda表達式可以看成是函數對象的語法糖,在你需要的時候,它可以很簡潔地給你生成一個函數對象。

我很讚賞lambda表達式的[]子句,可以清楚地標明這個對象如何訪問其所在作用域中的變數(是引用,還是複製)。

不過多說一句:我本人不太希望看到這種語句流行,畢竟C++這種語言支持的範式已經很多了,就放過函數式吧……俺確實不喜歡有副作用的lambda……


簡單的說,lambda是函數對象的語法糖。

除非編譯器不再支持函數對象,否則就算沒有現在的lambda也會有類似的東西出現的。


反正功能都這麼多了,再多一個也無所謂


編程語言越往後面發展,越來越像 Lisp。


推薦閱讀:

智能指針有什麼不足之處?
如何理解C++中的關鍵字static, const, 以及#define在定義變數時的區別?
有講C/C++代碼優化和編譯器優化的書或文章嗎?
像c++ primer這樣的計算機專業書籍,大家都是在那裡買的,報價都不便宜啊?
c/c++開發轉嵌入式(軟體/驅動)工程師好轉嗎?

TAG:編程語言 | C | CC | C11 |