lua閉包的理解以及表與函數(shù)的幾種表達(dá)方法
前一段時(shí)間,在學(xué)習(xí)lua語言時(shí),看lua中文教程,在讀閉包這一節(jié)時(shí),看了好幾遍,對閉包這個(gè)概念還是很模糊,不能清楚的理解它是怎么回事
最近工作不是很忙,所以就自學(xué)了一些lua的知識,但是才看了兩個(gè)多小時(shí)就遇見了一個(gè)問題——閉包。好吧,我是看見它第一眼的時(shí)候以為是和close之類有關(guān)的巴拉巴拉。。。。(原諒我的無知)!但是越往下看越迷茫,所以就網(wǎng)上看了好多大師寫的東西學(xué)習(xí)學(xué)習(xí),特此記錄一下,以便日后看到不會。。。。。被人鄙視
在lua中函數(shù)也是變量,可以存儲在表中,也可以是函數(shù)的參數(shù),或是返回值,其實(shí)是個(gè)lua 的閉包大概可以理解成這個(gè)樣子 閉包(函數(shù)名){功能抽象, upvalue, env},功能抽象就是函數(shù)體了,
upvalue: 是內(nèi)嵌函數(shù)可以訪問外包函數(shù)已經(jīng)創(chuàng)建的所有局部變量,這些局部變量稱為該內(nèi)嵌函數(shù)的外部局部變量(external local variable)或者upvalue,upvalue實(shí)際指的是變量而不是值。
function newCounter() local i = 0 return function() i = i + 1 return i end end
在上面的例子中i就是一個(gè)upvalue
簡單的說閉包是一個(gè)函數(shù)加上它可以正確訪問的 upvalue。upvalue是嵌套函數(shù)的外部函數(shù)的局部變量。這個(gè)函數(shù)一般定義在另一個(gè)函數(shù)內(nèi)部;他可以訪問定義在外部函數(shù)內(nèi)的成員變量,參數(shù),以及全局函數(shù)。并且這個(gè)函數(shù)還可以返回函數(shù)。
表和函數(shù)
一:
Lib = {} Lib.foo = function (x,y) retrun x+ y end Lib.goo = function(x)retrun x end;
二:
Lib = { foo = function (x,y) retrun x+ y end goo = function(x)retrun x end; }
三:
Lib = {} Lib = {} functio Lib.foo (x,y) retrun x+ y end function Lib.goo (x)retrun x end;
以上就是對lua的閉包和表與函數(shù)的理解,有需要的小伙伴可以參考下。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。