日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

關(guān)于Squirrel3的Lambda表達(dá)式

 quasiceo 2014-01-15
分類: 我的工作 2009-12-13 15:36 316人閱讀 評(píng)論(2) 收藏 舉報(bào)

Squirrel 剛發(fā)布了Squirrel3 beta2版本,一直沒有時(shí)間研究它,這個(gè)周末,終于決定仔細(xì)看看。在Squirrel3 alpha的時(shí)候,就大致知道要加入Lambda表達(dá)式,不過Squirrel本來就將函數(shù)當(dāng)成一個(gè)內(nèi)部變量,Lambda表達(dá)式似乎意義不是很大。

Squirrel3的Lambda表達(dá)式大概是這樣應(yīng)用的:

exp := '@' '(' paramlist ')' exp

例如:local myexp = @(a,b) a + b

這等同于 local myexp = function(a,b) { return a + b; }


因此,這個(gè)Lambda表達(dá)式的意義也就是寫法上稍微的簡(jiǎn)潔,只是不知道Alberto Demichelis在實(shí)現(xiàn)的時(shí)候是否對(duì)Lambda表達(dá)式做過優(yōu)化。


在Squirrel3中,對(duì)Lambda的最大支持是在Array上提供了好幾種內(nèi)部方法,根據(jù)Alberto Demichelis的文檔,增加了以下四種內(nèi)部方法:


1:map(func(a)),對(duì)Array的每個(gè)元素執(zhí)行func(a)函數(shù)(或者Lambda表達(dá)式),將產(chǎn)生的值放入一個(gè)新的數(shù)組,并返回這個(gè)數(shù)組。這個(gè)內(nèi)部方法有點(diǎn)意思,如果從數(shù)學(xué)角度看,這相當(dāng)于一個(gè)映射變換,也許不是什么革命性的東西,但可以減少代碼的編寫量。

2:apply(func(a)),這個(gè)內(nèi)部方法的功能與map相似,只是不會(huì)產(chǎn)生新數(shù)組,而是將產(chǎn)生的值直接替換原數(shù)組的值。

3:reduce(func(prevval,curval)),這個(gè)方法比較奇怪,它相當(dāng)于一個(gè)疊加器,將數(shù)組的第一個(gè)元素傳遞給函數(shù)以后,再將之前函數(shù)的返回值與后續(xù)的元素依次傳遞給函數(shù),最后得到的函數(shù)返回值為輸出值,難道是離散卷積,我得去查查數(shù)學(xué)書,不知道有什么用處。

4:filter(func(index,val)),這個(gè)方法實(shí)現(xiàn)一個(gè)過濾器,將數(shù)組的序號(hào)和值傳遞給函數(shù),如果函數(shù)返回true,就將這個(gè)值加入到新數(shù)組,否則就過濾掉,最后產(chǎn)生的新數(shù)組作為輸出。

今天大致研究了這些東西,不知道這些新特性對(duì)自己的工作是否有用了

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多