日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]為什么是lambda?講了這么多天的lambda表達(dá)式,有一個(gè)很基本的問(wèn)題沒(méi)有回答:為什么叫l(wèi)ambda表達(dá)式呢?首先這個(gè)lambda就是羅馬字母λ,lambda表達(dá)式即λ表達(dá)式。數(shù)學(xué)上有一個(gè)概念叫λ

為什么是lambda?


講了這么多天的lambda表達(dá)式,有一個(gè)很基本的問(wèn)題沒(méi)有回答:為什么叫l(wèi)ambda表達(dá)式呢?


首先這個(gè)lambda就是羅馬字母λ,lambda表達(dá)式即λ表達(dá)式。數(shù)學(xué)上有一個(gè)概念叫λ演算,其中的一個(gè)內(nèi)容就是λ表達(dá)式。


考慮普通的數(shù)學(xué)函數(shù)表示方法:


f(x) = 2x + 1


按照λ表達(dá)式的規(guī)則,可以寫成:


λx.(2x+1)


這個(gè)表達(dá)式可以讀成“對(duì)于參數(shù)x,2x+1。這里的Lambda,λ,僅僅表達(dá)的是數(shù)學(xué)中"函數(shù)"的概念。


各種編程語(yǔ)言,也引入了λ(lambda)表達(dá)式。例如:


C#語(yǔ)言:(x) =>{ return 2x+1; }
Java語(yǔ)言:(x) ->{ return 2x+1; }


C++11中也同樣引入了lambada表達(dá)式,


[](int x)->int{ return 2 * x + 1;}


對(duì)于程序員來(lái)講,lambda表達(dá)式提供了一種實(shí)現(xiàn)無(wú)名函數(shù)的方法。


無(wú)名的煩惱


lambda表達(dá)式不需要定義函數(shù)(名),在大多數(shù)場(chǎng)景下,這是一種便利,但也會(huì)帶來(lái)一些煩惱,例如遞歸調(diào)用。因?yàn)闆](méi)有函數(shù)名,如何調(diào)用自己就成了一個(gè)問(wèn)題。

當(dāng)然了,這個(gè)問(wèn)題是可以解決的。這里以階乘為例進(jìn)行說(shuō)明,直接上代碼:


function factorial =
? ? ? ?[&](int n){
? ? ? ? ? if(n < 2) return 1;
? ? ? ? ? return n * factorial(n - 1);
? ? ? ?};
cout << factorial(3) << endl;


lambda表達(dá)式的遞歸調(diào)用有幾個(gè)要點(diǎn):

使用標(biāo)準(zhǔn)庫(kù)中的function模版類型定義表達(dá)式類型,其中模范參數(shù)與lambda表達(dá)式的返回值,參數(shù)一致。

使用引用捕獲來(lái)獲得factorial的使用權(quán)。

調(diào)用factorial實(shí)現(xiàn)遞歸調(diào)用。


作者觀點(diǎn)


各種語(yǔ)言都是用lambda表達(dá)式這個(gè)名稱,果然是有原因的。



覺(jué)得本文有幫助?請(qǐng)分享給更多人。閱讀更多更新文章,請(qǐng)掃描下面二維碼,關(guān)注微信公眾號(hào)【面向?qū)ο笏伎肌?p>

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

其實(shí)在 c++語(yǔ)言里面const修飾的才算是一個(gè)真正的常量,在 c 語(yǔ)言中 const 可以說(shuō)是個(gè)“冒牌貨”。為什么會(huì)這樣?其實(shí)是 c++ 編譯器對(duì) const 進(jìn)行了加強(qiáng),當(dāng) c++ 編譯器遇到常量聲明時(shí),不會(huì)像 c...

關(guān)鍵字: c++ C語(yǔ)言 const

返回函數(shù)的引用去初始化一個(gè)新的引用這個(gè)和前面一樣,都是不會(huì)產(chǎn)生副本,但是現(xiàn)在是用返回值去初始化一個(gè)引用聲明c,也就是說(shuō)這時(shí)候變成了變量temp的別名,在c的生命周期內(nèi)temp是一直有效的,這樣做完全可以。

關(guān)鍵字: c++ 返回值 引用聲明

C++是一種面向?qū)ο蟮母呒?jí)程序設(shè)計(jì)語(yǔ)言,是C語(yǔ)言的超集。

關(guān)鍵字: c++ C語(yǔ)言

分析:這是Adobe 公司2007 年校園招聘的最新筆試題。這道題除了考察應(yīng)聘者的C++ 基本功底外,還能考察反應(yīng)能力,是一道很好的題目。 在Java 中定義了關(guān)鍵字final ,被final 修飾的

關(guān)鍵字: c++ class

泛型算法中的定制操作很多算法都會(huì)比較輸入序列中的元素,通過(guò)定制比較動(dòng)作,可以控制算法按照編程者的意圖工作。本文以string排序?yàn)槔M(jìn)行說(shuō)明,首先是缺省的排序動(dòng)作:?vector v{"This","

關(guān)鍵字: c++

? ? ? ? 假設(shè)我們有個(gè)函數(shù)用來(lái)揭示處理程序的優(yōu)先權(quán),另一個(gè)函數(shù)用來(lái)在某動(dòng)態(tài)分配所得的Widget 上進(jìn)行某些帶有優(yōu)先權(quán)的處理:int priority () ; void processWi

關(guān)鍵字: c++ effective

判斷鏈表中是否有環(huán)最經(jīng)典的方法就是快慢指針,同時(shí)也是面試官大多想要得到的答案。? ? ? ?快指針pf(f就是fast的縮寫)每次移動(dòng)2個(gè)節(jié)點(diǎn),慢指針ps(s為slow的縮寫)每次移動(dòng)1個(gè)節(jié)點(diǎn),如果快

關(guān)鍵字: c++ 鏈表 快慢指針

轉(zhuǎn)載請(qǐng)注明出處:http://blog.csdn.net/callon_h/article/details/52073268 引子 上一篇博客從內(nèi)核驅(qū)動(dòng)到android app講述了android通過(guò)

關(guān)鍵字: c++ java

在網(wǎng)上看到一段讀寫bmp格式圖像的代碼,本文對(duì)這段代碼分成兩個(gè)函數(shù)封裝起來(lái)方便使用,一個(gè)函數(shù)是讀取bmp格式的圖像,一個(gè)是向指定文件寫入bmp格式的圖像。前提我們不需要知道這段代碼是如何讀取bmp格式

關(guān)鍵字: bmp c++

以前,在lambda表達(dá)式?jīng)]有進(jìn)入標(biāo)準(zhǔn)的時(shí)候,對(duì)容器的遍歷等涉及到使用函數(shù)指針的情況,一般人會(huì)懶得使用std::for_each,或std::transform,也許只是一個(gè)短短的幾句話,卻要單獨(dú)寫個(gè)

關(guān)鍵字: c++ c++11
關(guān)閉