我有一个功能:它加载文件数据并构建一个表。 我只想加载文件一次,每次调用函数并获取内存中的返回表,不要再次加载文件(你知道操作重复是坏的)。 目标就像java中的静态字段一样,只构建一次,然后使用它。 怎么做 ?
答案 0 :(得分:1)
您可以通过以下几种方式之一完成此操作。例如:
local myInternalLocal = nil
function FuncName(...)
if(not myInternalLocal) then
myInternalLocal = --Do stuff that builds the table.
end
return myInternalLocal
end
或者,您可以通过替换来实现,它可以更好地隐藏内部变量,并且(非常轻微)更快:
function FuncName(...)
local myInternalLocal = --Do stuff that builds the table.
FuncName = function()
return myInternalLocal
end
end
这方面的缺点与模块有关。如果这是在模块内部,那么您可能需要更改它重新绑定函数的方式。当然,如果有人在调用之前存储旧函数,他们可以继续调用原始版本。
答案 1 :(得分:1)
我认为你想用require
加载文件。