Создать локальную переменную в Lua - PullRequest
3 голосов
/ 01 февраля 2012

Если у меня есть имя переменной (например, "x"), хранящееся в другой переменной (в этом примере varname), я могу создать глобальную переменную через

_G[varname]=42

Это сложный способ сказать

x=42

Теперь я хочу сделать то же самое для локальных переменных.Возможно ли это?

Ответы [ 2 ]

11 голосов
/ 01 февраля 2012

Нет, потому что локальные переменные не хранятся ни в таблице, ни в какой-либо структуре, которая связывает их имя с ними.Когда код lua скомпилирован в байт-код, имена локальных переменных превращаются в числовые смещения в стеке lua.

3 голосов
/ 02 февраля 2012

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

local localVars = {}

function setValue(varname, value)
  localVars[varname] = value
end

function getValue(varname)
  return localVars[varname]
end

Вы на самом деле не создаете и не уничтожаете локальные переменные таким образом, но вы довольно близко подходите.

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