Lua語言學習之模組與包

2021-06-23 00:15:44 字數 1207 閱讀 4571

一、lua基本庫中的**載入函式

lua基本庫中有一些函式,能夠在執行原始碼之前,先將原始碼預編譯為一種中間形式,或者是

載入別的 lua **。

1. loadfile ( filename ) 

該函式會從乙個檔案載入 lua **塊,但它不會執行**,只是編譯**,

然後將編譯結果作為乙個函式返回,當沒有指定filename時裝載標準輸入(stdin)的內容。

2.dofile (filename)

功能:開啟並且執行乙個lua塊,當忽略引數filename時,將執行標準輸入裝置(stdin)的內容。

返回所有塊的返回值。當發生錯誤時,dofile將錯誤反射給呼叫者。

4.load (func [, chunkname])

功能:裝載乙個塊中的函式,每次呼叫func將返回乙個連線前一結的字串,在塊結尾處將返回nil

當沒有發生錯誤時,將返回乙個編譯完成的塊作為函式,否則返回nil加上錯誤資訊,

此函式的環境為全域性環境

chunkname用於錯誤和除錯資訊。

5.loadstring (string [, chunkname])

功能:與load類似,但裝載的內容是乙個字串

如:assert(loadstring(str))()

二、require 函式

lua提供了乙個名為 require 的高層函式來載入模組,但這個函式只假設了關於模組的基本概念。

對於 require 而言,乙個模組就是一段定義了一些值的**。

要載入乙個模組,只需簡單地呼叫 require 」< 模組名 > 「。該呼叫會返回乙個由模組函式組成的 

table,並且還會定義乙個包含該 table 的全域性變數。然而,這些行為都是由模組完成的,而非 require。

所以,有些模組會選擇返回其他值,或者具有其他的效果。

三、module 函式

編寫乙個模組時,可以直接用 module 函式來生成模組**,相當於:

local modname = ...

local m =

_g[ modname ] = m

package.loaded[ modname ] = m

...setfenv( 1, m )

module( ... ) 就等價於上面的**。

三、包:package, 就是一系列的模組

Lua語言學習

命名規則的不同 scite編輯器使用指南 變數 注釋有三種 運算子分支結構 迴圈結構 10是i 10 條件表示式 1 是i 1 增量表示式,步長 for i 0,10,1 do 體 endwhile 布林表示式 do 體 endrepeat 體until a 陣列陣列名 區域性 全域性 functi...

Lua 模組與包

模組類似於乙個封裝庫,從 lua 5.1 開始,lua 加入了標準的模組管理機制,可以把一些公用的 放在乙個檔案裡,以 api 介面的形式在其他地方呼叫,有利於 的重用和降低 耦合度。lua 的模組是由變數 函式等已知元素組成的 table,因此建立乙個模組很簡單,就是建立乙個 table,然後把需...

Lua 模組與包

模組類似於乙個封裝庫,從lua 5.1開始,lua加入了標準的模組管理機制,可以把一些公用的 放在乙個檔案裡,以api介面的形式在其他地方呼叫,有利於 的重用和降低 耦合度。lua的模組是由變數 函式等已知元素組成的table,因此建立乙個模組很簡單,就是建立乙個table,然後把需要匯出的常量 函...