Как загрузить данные файла в память и не перезагружать снова.как статическое поле в Java? - PullRequest
0 голосов
/ 12 марта 2012

У меня есть функция: это загрузить данные файла и построить таблицу.Я хочу загрузить файл только один раз, каждый раз вызывать функцию и получать таблицу возврата в памяти, не загружать файл снова (вы знаете, что повторение операции плохо).цель такая же, как статическое поле в java, построить только один раз и использовать его.как сделать ?

Ответы [ 2 ]

1 голос
/ 12 марта 2012

Я думаю, что вы хотите использовать require для загрузки файла.

1 голос
/ 12 марта 2012

Вы можете сделать это одним из нескольких способов. Например:

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

Недостаток здесь связан с модулями. Если это внутри модуля, то вам может потребоваться изменить способ повторного связывания функции. И, конечно, если кто-то сохранит старую функцию перед вызовом, он может продолжать вызывать оригинальную версию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...