1. 程式人生 > >Lua學習之加載其他lua文件

Lua學習之加載其他lua文件

讀者 添加 常量 包含 cal pat 就是 文件的 使用說明

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 文件,讀者可根據自己的實際情況添加對應的路徑。

以上親測有效。

Lua學習之加載其他lua文件