成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關(guān)于Lua Module機(jī)制分析

移動(dòng)開發(fā) iOS
關(guān)于Lua Module機(jī)制分析是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)Lua Module機(jī)制,具體內(nèi)容來看本文詳解。

關(guān)于Lua Module機(jī)制分析是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)Lua Module機(jī)制,具體內(nèi)容來看本文詳解。Lua中的模塊(module)機(jī)制有點(diǎn)類似于C語言的動(dòng)態(tài)庫,可以將一些公共的代碼放在模塊中,以API的形式提供給Lua應(yīng)用腳本使用。使用模塊或許還可以做成像Android的Application Frameworks,建立一種新的應(yīng)用程序編程模型,只是猜想。

模塊最簡(jiǎn)單的使用方式:

  1. view plaincopy to clipboardprint?require “os”    
  2. os.clock()    
  3. require “os”  
  4. os.clock()  

table

Lua語言共有8中數(shù)據(jù)類型,其中table(表)類型實(shí)現(xiàn)了“關(guān)聯(lián)數(shù)組(associative array)”。table中可以保存各種數(shù)據(jù)類型。和table關(guān)聯(lián)的metatable,它定義了表的操作的一些行為,比如: 使用+操作時(shí),會(huì)去查找metatable的屬性__add,有的話執(zhí)行。

function

function是Lua中8中基本類型之一,和其它類型一樣可以作為值傳遞。和function有關(guān)聯(lián)的表是環(huán)境表(environment),可以認(rèn)為是function的執(zhí)行環(huán)境??梢酝ㄟ^setfenv()和getfenv()來設(shè)置和獲取函數(shù)的環(huán)境表。函數(shù)中對(duì)于全局的操作,比如:定義全局變量等;就是在這個(gè)表中進(jìn)行的。多個(gè)函數(shù)可以共享一個(gè)表

require

當(dāng)使用require加載一個(gè)模塊時(shí),實(shí)際上做了如下的事情:

在表package.loaded中查找模塊是否存在,有的話就返回該值??梢允褂萌缦潞瘮?shù)輸出表中的內(nèi)容

  1. view plaincopy to clipboardprint?function walkTable(t)    
  2.        for k,v in pairs(t) do    
  3.               print("+++",k,v,"+++")    
  4.        end    
  5. end    
  6. function walkTable(t)  
  7.        for k,v in pairs(t) do  
  8.               print("+++",k,v,"+++")  
  9.        end  
  10. end  

package.loaded中的內(nèi)容如下,其中包含了一些默認(rèn)加載的庫和全局表_G

  1. view plaincopy to clipboardprint?+++ string      ,      table: 003B82B0     +++    
  2. +++ debug      ,      table: 003B9300      +++    
  3. +++ package   ,      table: 003B5C30     +++    
  4. +++ _G   ,      table: 003B2E10     +++    
  5. +++ io     ,      table: 003B7320      +++    
  6. +++ os    ,      table: 003B7988      +++    
  7. +++ table ,      table: 003B51E0     +++    
  8. +++ math       ,      table: 003B8728      +++    
  9. +++ coroutine ,      table: 003B59D8     +++    
  10. +++ string      ,      table: 003B82B0     +++  
  11. +++ debug      ,      table: 003B9300      +++  
  12. +++ package   ,      table: 003B5C30     +++  
  13. +++ _G   ,      table: 003B2E10     +++  
  14. +++ io     ,      table: 003B7320      +++  
  15. +++ os    ,      table: 003B7988      +++  
  16. +++ table ,      table: 003B51E0     +++  
  17. +++ math       ,      table: 003B8728      +++  
  18. +++ coroutine ,      table: 003B59D8     +++  

為模塊查找加載器(loader),查詢package.preload,通常為空

加載Lua文件使用loadfile函數(shù)。loadfile會(huì)將文件當(dāng)作函數(shù)來加載,require會(huì)將模塊名作為參數(shù)傳給該函數(shù)。若有返回值則將返回值放入表package.loaded中。若沒有則返回表package.loaded中的值。

module  

當(dāng)在模塊文件中使用module函數(shù)的時(shí)候,如下所示;

  1. view plaincopy to clipboardprint?module “mymodule”    
  2. module “mymodule” 

實(shí)際上等同于以下的語句:

  1. view plaincopy to clipboardprint?local modname = “mymodule”     – 定義模塊名    
  2. local M = {}                               -- 定義用于返回的模塊表    
  3. _G[modname] = M                      -- 將模塊表加入到全局變量中    
  4. package.loaded[modname] = M    -- 將模塊表加入到package.loaded中,防止多次加載    
  5. setfenv(1,M)                -- 將模塊表設(shè)置為函數(shù)的環(huán)境表,這使得模塊中的所有操作是以在模塊表中的,這樣定義函數(shù)就直接定義在模塊表中    
  6. local modname = “mymodule”     – 定義模塊名  
  7. local M = {}                       -- 定義用于返回的模塊表  
  8. _G[modname] = M                      -- 將模塊表加入到全局變量中  
  9. package.loaded[modname] = M    -- 將模塊表加入到package.loaded中,防止多次加載  
  10. setfenv(1,M)                  -- 將模塊表設(shè)置為函數(shù)的環(huán)境表,這使得模塊中的所有操作是以在模塊表中的,這樣定義函數(shù)就直接定義在模塊表中  

通過module(),可以方便的編寫模塊中的內(nèi)容。

測(cè)試環(huán)境

  1. lua for windows IDE 

小結(jié):關(guān)于Lua Module機(jī)制分析的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-23 14:33:51

Lua捕獲字符串

2011-08-24 15:42:38

LUA源代碼

2011-08-25 15:41:42

Lua源碼

2011-08-29 15:53:04

Lua位運(yùn)算

2011-08-24 16:24:54

Lua源代碼

2011-08-24 17:19:20

Lua源文件

2021-02-22 11:30:07

Golang 1.16ModuleGolang

2011-08-25 15:51:10

Lua腳本

2011-08-23 15:34:56

Lua模式 匹配

2011-08-24 14:33:14

LUA開發(fā)環(huán)境Decoda

2011-08-25 17:25:55

LUADelphi

2011-08-29 16:37:21

Lua協(xié)同線程

2011-09-06 17:37:01

LUA應(yīng)用

2011-08-25 14:03:32

UbuntuLUA安裝

2011-08-24 14:14:13

LUA環(huán)境 配置

2009-11-09 17:55:13

WCF緩存

2011-09-01 17:46:22

MySQL ProxyLua腳本

2011-08-25 15:21:02

Lua字符串

2011-08-23 16:37:05

Lua數(shù)學(xué)庫

2011-08-24 15:34:44

MinGWLua環(huán)境配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产免费一区二区三区最新6 | 女女百合av大片一区二区三区九县 | 黄色网页在线 | 久久伊人精品 | 黄免费看| 国产一区二区高清在线 | 国产精品久久久久无码av | 久久久久国产精品一区二区 | 在线不卡av | 日本免费在线观看视频 | 亚洲狠狠 | 精品日韩一区二区 | 一区二区三区视频在线观看 | 久草久草久草 | 毛片久久久 | 龙珠z在线观看 | 午夜羞羞 | 奇米在线| 精品不卡 | 精品国产乱码久久久久久88av | 亚洲精品在线免费观看视频 | 天天操操操操操 | 在线婷婷| 成年人网站在线观看视频 | 超碰网址 | 久久久久精 | 亚洲国产成人av好男人在线观看 | 免费黄色av网站 | 99久久99热这里只有精品 | 一区二区三区视频在线免费观看 | 黄网站在线播放 | 国产亚洲精品精品国产亚洲综合 | 亚洲成人精品影院 | 国内自拍偷拍一区 | 日韩欧美精品在线播放 | 亚洲精选一区二区 | 国产精品电影在线观看 | 欧美日韩视频在线播放 | 国产精品精品3d动漫 | 韩国欧洲一级毛片 | 成人免费在线观看 |