一、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,然後把需要匯出的常量 函...