在香草的Lua 5.2,我有一個包含模塊:模塊利用彼此的本地對象
兩個本地函數,A和B:B總是會調用A,A有時會調用B和有時會調用C中存儲的函數;
C:表(本地)。它包含包含表格的表格,這些表格可以包含表格......這些表格最後包含功能。這些功能可能會調用A或B;
然後返回函數D,當我的模塊使用
require
加載時,將返回該函數。它將調用A.
最後,它看起來非常像這樣:
--don't pay attention to what the functions do:
--I am only writing them down to explain how they interact with each other
local A, B, C
C = {
...
{
function(a)
B(a)
end
}
...
}
A = function(a)
...
if (...) then
B(a)
end
...
if (...) then
C[...]...[...](a)
end
...
end
B = function(a)
A(a)
end
return function(s) -- we called this one D
A(s)
end
現在,我的問題是這樣的:C的聲明使用了自己的局部變量,元表和所有東西,直到我把它的聲明放在do ... end
塊中。
它也是 - 對於每個花括號和縮進等表格和換行符中的所有表格 - 相當長。所以我想把它放在它自己的模塊中,但它不能訪問B.
所以,我的問題是:是否有一種方法可以傳遞B,甚至可以將A傳遞到加載C時聲明的文件它?我的意思是這樣,如果有可能:
--in the original module
local A, B, C
C = require("c", A, B)
...
,然後在c.lua:
local A, B = select(1, ...), select(2, ...)
C = {
...
{
function(a)
B(a)
end
}
...
}
我真的對如何做到這一點不知道。
有沒有一種方法可以將需求文件中的變量傳遞給所需的文件,而不需要在全局名稱空間中插入變量?
這很聰明,真的很聰明。 – user6245072