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

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

 更新時間:2014年10月31日 09:43:28   投稿:junjie  
這篇文章主要介紹了Lua極簡入門指南(六):模塊,本文講解了require函數(shù)、編寫模塊、查找模塊等內容,需要的朋友可以參考下

從用戶的角度來看,一個模塊能夠通過 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是相當簡單易學,本篇文章來給大家稍微講一下Lua的語法,不會長篇累牘得把Lua的所有語法都講一遍,這里通過以下幾點來講Lua語言的基礎語法。
    2015-05-05
  • Lua教程(一):在C++中嵌入Lua腳本

    Lua教程(一):在C++中嵌入Lua腳本

    這篇文章主要介紹了Lua教程(一):在C++中嵌入Lua腳本,本文在MAC環(huán)境中開發(fā),同時探討了IOS項目集成Lua、Android項目集成Lua等內容,需要的朋友可以參考下
    2014-09-09
  • Lua中的一些常用函數(shù)庫實例講解

    Lua中的一些常用函數(shù)庫實例講解

    這篇文章主要介紹了Lua中的一些常用函數(shù)庫實例講解,本文講解了數(shù)學庫、table庫、字符串庫、I/O庫等常用函數(shù)庫,需要的朋友可以參考下
    2014-09-09
  • 淺析Lua編程中的異常處理

    淺析Lua編程中的異常處理

    這篇文章主要介紹了淺析Lua編程中的異常處理,是Lua入門學習中的基礎知識,要的朋友可以參考下
    2015-05-05
  • Lua之協(xié)同程序coroutine代碼實例

    Lua之協(xié)同程序coroutine代碼實例

    這篇文章主要介紹了Lua之協(xié)同程序coroutine代碼實例,本文給出的代碼示例較為復雜,需要對Lua協(xié)同程序有一定的了解方能看懂,需要的朋友可以參考下
    2015-04-04
  • 詳解Lua中的元表和元方法

    詳解Lua中的元表和元方法

    Lua中的元表(Metatable)和元方法(Metamethods)是Lua語言中的重要概念,它們允許我們對對象和操作進行自定義,本文講給大家詳細介紹一下Lua中的元表和元方法,需要的朋友可以參考下
    2023-09-09
  • Lua所有內置函數(shù)羅列

    Lua所有內置函數(shù)羅列

    這篇文章主要介紹了Lua所有內置函數(shù)羅列,本文匯集了Lua腳本語言的所有內置函數(shù),需要的朋友可以參考下
    2015-04-04
  • Lua面向對象編程學習筆記

    Lua面向對象編程學習筆記

    這篇文章主要介紹了Lua面向對象編程學習筆記,本文講解了Lua中實現(xiàn)類的例子、類之間繼承的例子等內容,需要的朋友可以參考下
    2014-12-12
  • 詳解Lua中的變量相關知識點

    詳解Lua中的變量相關知識點

    這篇文章主要介紹了Lua中的變量相關知識點,是Lua入門中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • Lua中簡單的錯誤處理實例

    Lua中簡單的錯誤處理實例

    這篇文章主要介紹了Lua中簡單的錯誤處理實例,本文講解了Lua錯誤處理中的error、assert、pcall等內容,需要的朋友可以參考下
    2014-09-09

最新評論