Lua學習之加載其他lua文件


Lua 中提供了模塊的概念,模塊類似一個封裝庫或者 C++ 中的一個類,可以將公用的部分提到一個文件中,以 API 的形式供其他 lua 文件調用。

Lua 中的模塊其實就是包含變量、函數等已知元素組成的 table, 本質上是一個 table。

一、模塊的聲明

創建一個名稱為 LearnModule.lua 的文件,並在此文件中實現下列代碼:

-- 定義一個名為ModuleT的模塊,模塊的本質就是一個table,內部包含變量和函數等
ModuleT = {}


-- 定義一個變量
ModuleT.constant = '這是一個常量'

-- 定義一個
function ModuleT.Fun1(  )
    print('這是一個公有函數')
end


local function Fun2()
    print('這是一個私有函數')
end


function ModuleT.Fun3( )
    Fun2()
end

return ModuleT

二、在其他 lua 文件中使用 ModuleT 模塊

1. 首先創建另外一個 lua 文件,例如命名為 TestModule.lua。

2. 通過 require 函數加載包含 ModuleT 模塊的文件,代碼如下:

require("LearnModule") print(ModuleT.constant) print(ModuleT.Fun1)

3. 打印結果為:

----learn to how to make module-----
這是一個常量 function: 0x7fa350604660

 

三、require 函數使用說明

  • require 函數的使用
-- name 表示定義的Module 所在的 lua 文件
require("<name>")
  • 找不到 name 對應的文件

第一次使用 require 函數加載指定模塊的文件時,可能提示找不到對應的文件,原因在於 Lua 有一個默認的查找路徑。通過 package.path 和 package.cpath 查找路徑。

 

-- 打印出當前默認搜索的動態庫(so)路徑
print(package.cpath) -- 打印當前默認的用於搜索.lua文件的路徑
print(package.path)

 

package.cpath:代表默認的 so 庫的查找路徑。
package.path:代表默認的 lua 文件的查找路徑。

如果通過 require 函數加載指定的模塊文件時,提示找不到對應的文件,則通過設置 package.path 路徑即可。具體代碼如下:
package.path = package.path..";/Users/momo/Documents/workspace_lua/?.lua"
print(package.path)


上述代碼表示將 package.path 的路徑追加上 「/Users/momo/Documents/workspace_lua/」 路徑下的所有 lua 文件,讀者可根據自己的實際情況添加對應的路徑。

 

以上親測有效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM