如何在内存中加载文件数据,不要再次重新加载。就像java中的静态字段一样?

时间:2012-03-12 09:42:01

标签: lua

我有一个功能:它加载文件数据并构建一个表。 我只想加载文件一次,每次调用函数并获取内存中的返回表,不要再次加载文件(你知道操作重复是坏的)。 目标就像java中的静态字段一样,只构建一次,然后使用它。 怎么做 ?

2 个答案:

答案 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加载文件。