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

主頁 > 知識庫 > Lua極簡入門指南(六):模塊

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

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

從用戶的角度來看,一個模塊能夠通過 require 加載并返回一個 table,模塊導出的接口都被定義在此 table 中(此 table 被作為一個 namespace)。所有的標準庫都是模塊。標準庫被預先加載了,就像這樣:

復制代碼 代碼如下:

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

require 函數(shù)

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

復制代碼 代碼如下:

require 'modulename'

模塊名(modulename)不那么準確的來說就是一個文件名(Lua 文件或者是 C 庫)。一個模塊被加載后會被緩存到 pacakge.loaded[modulename] 中。看一個例子:

復制代碼 代碼如下:

-- test.lua
print 'Hello World'

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

復制代碼 代碼如下:

-- main.lua
require 'test'

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

復制代碼 代碼如下:

package.loaded[modulename] = nil

范例:

復制代碼 代碼如下:

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

編寫模塊

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

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

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

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

查找模塊

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

復制代碼 代碼如下:

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

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

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

一個模塊命名為 mod.sub,其是 mod 的子模塊。在查找模塊時,mod.sub 中的 . 號會被轉換為目錄分隔符。假定路徑列表如下:

復制代碼 代碼如下:

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

那么 require ‘a.b' 將嘗試打開文件:

復制代碼 代碼如下:

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

您可能感興趣的文章:
  • Lua腳本語言簡明入門教程
  • Lua極簡入門指南(一):基礎知識篇
  • Lua極簡入門指南(三): loadfile和錯誤處理
  • Lua極簡入門指南(一):函數(shù)篇
  • Lua極簡入門指南:全局變量
  • lua腳本語言快速入門教程
  • Lua入門學習筆記
  • Lua 極簡入門指南(七):面向對象編程
  • Lua腳本語言基本語法快速入門教程
  • Lua語言新手簡單入門教程

標簽:濰坊 德宏 宣城 金昌 天門 臺灣 儋州 天門

巨人網(wǎng)絡通訊聲明:本文標題《Lua極簡入門指南(六):模塊》,本文關鍵詞  Lua,極簡,入門,指南,六,模塊,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Lua極簡入門指南(六):模塊》相關的同類信息!
  • 本頁收集關于Lua極簡入門指南(六):模塊的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 麻城市| 如东县| 阿克陶县| 河曲县| 瑞丽市| 西吉县| 罗江县| 武邑县| 九江市| 安化县| 景德镇市| 遂川县| 安国市| 金乡县| 海宁市| 奉贤区| 沅江市| 南川市| 铁力市| 高青县| 根河市| 鹤岗市| 都匀市| 吉木乃县| 许昌县| 安吉县| 洱源县| 南城县| 图片| 交口县| 磐石市| 东兴市| 汉川市| 铜山县| 新宁县| 寻甸| 黔西县| 信宜市| 咸阳市| 涟水县| 泾源县|