Lua 模塊引入中 import 和 require 的差異


Lua 中引入一個模塊,可以采用兩種方式:import 和 require 方式,具體的區別在於:

載入一個模塊

import() 與 require() 功能相同,但具有一定程度的自動化特性。

假設我們有如下的目錄結構:

~~~

app/
app/classes/
app/classes/MyClass.lua
app/classes/MyClassBase.lua
app/classes/data/Data1.lua
app/classes/data/Data2.lua

~~~

MyClass 中需要載入 MyClassBase 和 MyClassData。如果用 require(),MyClass 內的代碼如下:

~~~ lua

local MyClassBase = require("app.classes.MyClassBase")
local MyClass = class("MyClass", MyClassBase)

local Data1 = require("app.classes.data.Data1")
local Data2 = require("app.classes.data.Data2")

~~~

假如我們將 MyClass 及其相關文件換一個目錄存放,那么就必須修改 MyClass 中的 require() 命令,否則將找不到模塊文件。

而使用 import(),我們只需要如下寫:

~~~ lua

local MyClassBase = import(".MyClassBase")
local MyClass = class("MyClass", MyClassBase)

local Data1 = import(".data.Data1")
local Data2 = import(".data.Data2")

~~~

當在模塊名前面有一個"." 時,import() 會從當前模塊所在目錄中查找其他模塊。因此 MyClass 及其相關文件不管存放到什么目錄里,我們都不再需要修改 MyClass 中的 import() 命令。這在開發一些重復使用的功能組件時,會非常方便。

我們可以在模塊名前添加多個"." ,這樣 import() 會從更上層的目錄開始查找模塊。

~

不過 import() 只有在模塊級別調用(也就是沒有將 import() 寫在任何函數中)時,才能夠自動得到當前模塊名。


免責聲明!

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



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