婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Lua極簡(jiǎn)入門指南(六):模塊

Lua極簡(jiǎn)入門指南(六):模塊

熱門標(biāo)簽:個(gè)人怎么在地圖標(biāo)注需要的店鋪 漳州智云呼電話機(jī)器人 百度地圖標(biāo)注早餐區(qū)域 冀州市地圖標(biāo)注 新岸線智能電銷機(jī)器人 清朝地圖標(biāo)注哈爾濱 怎么去除地圖標(biāo)注 地圖標(biāo)注大廈 武漢外呼防封系統(tǒng)多少錢

從用戶的角度來(lái)看,一個(gè)模塊能夠通過(guò) require 加載并返回一個(gè) table,模塊導(dǎo)出的接口都被定義在此 table 中(此 table 被作為一個(gè) namespace)。所有的標(biāo)準(zhǔn)庫(kù)都是模塊。標(biāo)準(zhǔn)庫(kù)被預(yù)先加載了,就像這樣:

復(fù)制代碼 代碼如下:

math = require 'math'
string = require 'string'

require 函數(shù)

使用 require 函數(shù)加載模塊能夠避免多次重復(fù)加載模塊。加載一個(gè)模塊:

復(fù)制代碼 代碼如下:

require 'modulename'

模塊名(modulename)不那么準(zhǔn)確的來(lái)說(shuō)就是一個(gè)文件名(Lua 文件或者是 C 庫(kù))。一個(gè)模塊被加載后會(huì)被緩存到 pacakge.loaded[modulename] 中。看一個(gè)例子:

復(fù)制代碼 代碼如下:

-- test.lua
print 'Hello World'

在 test.lua 的相同目錄下創(chuàng)建 main.lua 文件:

復(fù)制代碼 代碼如下:

-- main.lua
require 'test'

我們可以嘗試多次 require test.lua 文件,但最終只會(huì)輸出一次 Hello World。如果我們希望 require 重新加載模塊,那么可以清理 package.loaded:

復(fù)制代碼 代碼如下:

package.loaded[modulename] = nil

范例:

復(fù)制代碼 代碼如下:

require 'test'  --> Hello World
package.loaded.test = nil
require 'test'  --> Hello World

編寫模塊

編寫一個(gè)模塊很簡(jiǎn)單,我們先創(chuàng)建一個(gè) table 然后把需要導(dǎo)出的接口放入 table 中,最后返回此 table:

復(fù)制代碼 代碼如下:

-- test.lua
local exports = {}
 
function exports.foo()
    print 'Hello World'
end
 
return exports

模塊的返回值會(huì)被賦值給 package.loaded[modulename]:

復(fù)制代碼 代碼如下:

assert(require 'test' == package.loaded.test)

如果模塊不返回值,那么 package.loaded[modulename] 的值將為 true:

復(fù)制代碼 代碼如下:

-- 假定 test.lua 是一個(gè)空文件
local t = require 'test'
print(t)                    --> true
print(package.loaded.test)  --> true

更多的編寫模塊的方法見:http://lua-users.org/wiki/ModulesTutorial

查找模塊

如果一個(gè)模塊使用 Lua 編寫,那么將在 package.path 中查找,如果一個(gè)模塊使用 C 編寫,那么將在 package.cpath 中查找。package.path 和 package.cpath 是一個(gè)分號(hào)分隔的路徑列表,例如:

復(fù)制代碼 代碼如下:

C:\bin\lua\lua\&;.lua;C:\bin\lua\lua\&;\init.lua;C:\bin\lua\&;.lua;C:\bin\lua\&;\init.lua;.\&;.lua

每一個(gè)路徑都有一個(gè) ?,真正的查找路徑是將 ? 替換為模塊名之后的路徑。

實(shí)際上,我們可以自定義查找模塊的規(guī)則(通過(guò)向 package.searchers 中添加適當(dāng)?shù)?searcher 函數(shù)實(shí)現(xiàn)),例如我們可以把所有模塊保存在一個(gè)加密并壓縮的 zip 文件中。

一個(gè)模塊命名為 mod.sub,其是 mod 的子模塊。在查找模塊時(shí),mod.sub 中的 . 號(hào)會(huì)被轉(zhuǎn)換為目錄分隔符。假定路徑列表如下:

復(fù)制代碼 代碼如下:

C:\bin\lua\lua\&;.lua;.\&;.lua

那么 require ‘a(chǎn).b' 將嘗試打開文件:

復(fù)制代碼 代碼如下:

C:\bin\lua\lua\a\b.lua
.\a\b.lua

您可能感興趣的文章:
  • Lua腳本語(yǔ)言簡(jiǎn)明入門教程
  • Lua極簡(jiǎn)入門指南(一):基礎(chǔ)知識(shí)篇
  • Lua極簡(jiǎn)入門指南(三): loadfile和錯(cuò)誤處理
  • Lua極簡(jiǎn)入門指南(一):函數(shù)篇
  • Lua極簡(jiǎn)入門指南:全局變量
  • lua腳本語(yǔ)言快速入門教程
  • Lua入門學(xué)習(xí)筆記
  • Lua 極簡(jiǎn)入門指南(七):面向?qū)ο缶幊?/li>
  • Lua腳本語(yǔ)言基本語(yǔ)法快速入門教程
  • Lua語(yǔ)言新手簡(jiǎn)單入門教程

標(biāo)簽:濰坊 德宏 宣城 金昌 天門 臺(tái)灣 儋州 天門

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua極簡(jiǎn)入門指南(六):模塊》,本文關(guān)鍵詞  Lua,極簡(jiǎn),入門,指南,六,模塊,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua極簡(jiǎn)入門指南(六):模塊》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Lua極簡(jiǎn)入門指南(六):模塊的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 景谷| 乐东| 航空| 宿州市| 瑞安市| 金溪县| 大同市| 迁西县| 新乡市| 扶风县| 金川县| 图片| 尼木县| 越西县| 蒲江县| 建平县| 扬中市| 焉耆| 长阳| 奉化市| 阆中市| 建瓯市| 米泉市| 鹤山市| 水城县| 平凉市| 郎溪县| 绥宁县| 宁安市| 南江县| 杭锦旗| 仙居县| 丹江口市| 昌邑市| 镇巴县| 临清市| 周口市| 海阳市| 温泉县| 渭南市| 丰镇市|