1
例如,要更改需求文件的環境?就我而言,我創建構建行爲樹DSL(領域特定語言),這將是很好,如果我可以做這樣的事情:有沒有辦法在Lua 5.1中每次需要模塊時調用函數?
require "behaviortree"
return Sequence {
-- definition of tree
}
,不污染與節點名稱全局命名空間,或使用構造像
require "behaviortree".init()
因爲這在我看來有點醜。簡單地將一個setfenv調用放在模塊文件的主體中並沒有達到我想要的,因爲只有當我第一次需要模塊時纔會調用setfenv調用,而不是每次都需要模塊緩存。
我想過清理出每次我需要它的時候模塊的高速緩存,但是這意味着我需要做的是這樣
require "behaviortrees"
local tree = Sequence {
-- definition of tree
}
create(tree)
並清除緩存模塊中創建函數。這也是我想避免的,但是比調用模塊的init函數更好。
是否有任何'乾淨'的方式來使用模塊來設置所需文件的環境?
你可以'dofile'而不是'require'。這根本不會緩存,但只適用於Lua模塊。 –
@亨利梅克謝謝,我沒有想到這一點。但是,如果可能的話,我真的很希望保留所要求的「行爲主義」路線,純粹爲了美學目的。 –
「返回false」的模塊沒有被緩存,並且在每個「require」調用時重新加載。 – siffiejoe