欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

lua閉包的理解以及表與函數(shù)的幾種表達(dá)方法

 更新時(shí)間:2015年08月13日 08:52:09   投稿:hebedich  
本文首先通過(guò)具體的例子講解了Lua中閉包的概念,然后總結(jié)了閉包的應(yīng)用場(chǎng)合,最后探討了Lua中閉包的實(shí)現(xiàn)原理,以及l(fā)ua中表與函數(shù)的3種表達(dá)方式的匯總

前一段時(shí)間,在學(xué)習(xí)lua語(yǔ)言時(shí),看lua中文教程,在讀閉包這一節(jié)時(shí),看了好幾遍,對(duì)閉包這個(gè)概念還是很模糊,不能清楚的理解它是怎么回事

最近工作不是很忙,所以就自學(xué)了一些lua的知識(shí),但是才看了兩個(gè)多小時(shí)就遇見(jiàn)了一個(gè)問(wèn)題——閉包。好吧,我是看見(jiàn)它第一眼的時(shí)候以為是和close之類有關(guān)的巴拉巴拉。。。。(原諒我的無(wú)知)!但是越往下看越迷茫,所以就網(wǎng)上看了好多大師寫(xiě)的東西學(xué)習(xí)學(xué)習(xí),特此記錄一下,以便日后看到不會(huì)。。。。。被人鄙視

在lua中函數(shù)也是變量,可以存儲(chǔ)在表中,也可以是函數(shù)的參數(shù),或是返回值,其實(shí)是個(gè)lua 的閉包大概可以理解成這個(gè)樣子 閉包(函數(shù)名){功能抽象, upvalue, env},功能抽象就是函數(shù)體了,

upvalue: 是內(nèi)嵌函數(shù)可以訪問(wèn)外包函數(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

簡(jiǎn)單的說(shuō)閉包是一個(gè)函數(shù)加上它可以正確訪問(wèn)的 upvalue。upvalue是嵌套函數(shù)的外部函數(shù)的局部變量。這個(gè)函數(shù)一般定義在另一個(gè)函數(shù)內(nèi)部;他可以訪問(wèn)定義在外部函數(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;

以上就是對(duì)lua的閉包和表與函數(shù)的理解,有需要的小伙伴可以參考下。

相關(guān)文章

  • Lua基本語(yǔ)法

    Lua基本語(yǔ)法

    Lua是相當(dāng)簡(jiǎn)單易學(xué),本篇文章來(lái)給大家稍微講一下Lua的語(yǔ)法,不會(huì)長(zhǎng)篇累牘得把Lua的所有語(yǔ)法都講一遍,這里通過(guò)以下幾點(diǎn)來(lái)講Lua語(yǔ)言的基礎(chǔ)語(yǔ)法。
    2015-05-05
  • 舉例說(shuō)明Lua中元表和元方法的使用

    舉例說(shuō)明Lua中元表和元方法的使用

    這篇文章主要介紹了舉例說(shuō)明Lua中元表和元方法的使用,文中--兩個(gè)橫線開(kāi)始單行的注釋,--[[加上兩個(gè)[和]表示多行的注釋--]],需要的朋友可以參考下
    2015-07-07
  • Lua table類型學(xué)習(xí)筆記

    Lua table類型學(xué)習(xí)筆記

    這篇文章主要介紹了Lua table類型學(xué)習(xí)筆記,本文講解了table的基礎(chǔ)知識(shí)和table庫(kù)函數(shù)的使用以及面向?qū)ο缶幊虒?shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua讀寫(xiě)文件代碼示例

    Lua讀寫(xiě)文件代碼示例

    這篇文章主要介紹了Lua讀寫(xiě)文件代碼示例,本文講解了讀寫(xiě)文件的模式以及讀寫(xiě)文件代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • Lua學(xué)習(xí)筆記之類型與值

    Lua學(xué)習(xí)筆記之類型與值

    本文詳細(xì)的總結(jié)了Lua中的類型與值,對(duì)于實(shí)際編程中容易出錯(cuò)的地方也進(jìn)行了詳細(xì)的總結(jié),十分的全面實(shí)用。有需要的小伙伴可以參考下。
    2015-04-04
  • Lua中的迭代器淺析

    Lua中的迭代器淺析

    這篇文章主要介紹了Lua中的迭代器淺析,本文先是講解了什么是迭代器,然后給出了自己寫(xiě)一個(gè)迭代器的示例,最后介紹了迭代器的調(diào)用方法,需要的朋友可以參考下
    2014-09-09
  • Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)

    Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)

    這篇文章主要介紹了在Lua中實(shí)現(xiàn)php的strpos()以及strrpos()函數(shù)的方法,需要的朋友可以參考下
    2014-11-11
  • Lua利用cjson讀寫(xiě)json示例分享

    Lua利用cjson讀寫(xiě)json示例分享

    本文結(jié)合本人的實(shí)際使用經(jīng)驗(yàn)和代碼示例,介紹如何在Lua中對(duì)json進(jìn)行encode和decode,需要的朋友可以參考下
    2014-11-11
  • Lua中table的一些輔助函數(shù)介紹

    Lua中table的一些輔助函數(shù)介紹

    這篇文章主要介紹了Lua中table的一些輔助函數(shù)介紹,這些函數(shù)組成了table的函數(shù)庫(kù),需要的朋友可以參考下
    2014-09-09
  • Lua和C++的通信流程分解

    Lua和C++的通信流程分解

    這篇文章主要介紹了Lua和C++的通信流程分解,本文用一張圖講解了Lua和C++之間的通信流程,并對(duì)每一步做了分解,需要的朋友可以參考下
    2014-09-09

最新評(píng)論