0
我目前正在使用Lua中的一個相當詳細的項目,特別是使用LOVE2D。我目前使用require'file'
爲了訪問我的項目的不同部分,但這似乎是非常糟糕的形式。我遇到了使用相同名稱覆蓋來自不同文件的表的問題。必須有專業,乾淨的方式來做到這一點,但我一直沒有找到。有人能幫助我嗎?從Lua中的單獨文件調用函數/變量/表
我目前正在使用Lua中的一個相當詳細的項目,特別是使用LOVE2D。我目前使用require'file'
爲了訪問我的項目的不同部分,但這似乎是非常糟糕的形式。我遇到了使用相同名稱覆蓋來自不同文件的表的問題。必須有專業,乾淨的方式來做到這一點,但我一直沒有找到。有人能幫助我嗎?從Lua中的單獨文件調用函數/變量/表
使用require
是正確的做法。
將模塊看作是一個在加載時執行的函數。它的返回值被緩存並在後續的require調用中返回。就像您將使用local
變量來限制函數中的範圍一樣,您可以在模塊中執行相同操作。
我猜你的模塊被實現爲全球表:
mymodule = {}
function mymodule.foo()
return 'bar'
end
而且你喜歡加載模塊:
require 'mymodule'
模塊表只是更改爲local
變量並返回它:
local mymodule = {}
function mymodule.foo()
return 'bar'
end
return mymodule
然後,您可以使用您選擇的任何名稱加載模塊:
local mymodule = require 'mymodule'
既然你不創建全局變量,你不必擔心覆蓋其他模塊。
上面使用的示例來自lua-users.org網站上的Module Tutorial。查看更多關於創建模塊的信息。此外,How to write Lua modules in a post-module() world也值得一讀。
你有兩個同名的模塊嗎?或者只有兩個同名的全局表?請舉個例子來澄清你的問題。 –