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

Lua 中引入一個模塊,能夠採用兩種方式:import 和 require 方式,具體的區別在於:app

載入一個模塊函數

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

假設咱們有以下的目錄結構:lua

~~~開發

app/
app/classes/
app/classes/MyClass.lua
app/classes/MyClassBase.lua
app/classes/data/Data1.lua
app/classes/data/Data2.lua自動化

~~~class

MyClass 中須要載入 MyClassBase 和 MyClassData。若是用 require(),MyClass 內的代碼以下:import

~~~ luarequire

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

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() 寫在任何函數中)時,纔可以自動獲得當前模塊名。

相關文章
相關標籤/搜索