2015-10-08 3 views
1

Мне нужно создать много переменных, и я хочу объявить имя этой переменной по функции. В так:Как определить переменную, названную функцией?

function DefineVariable(VariableName) 
return VariableName = 123 end 

Что я хочу от функции:

DefineVariable(weg423) 
-- Result: weg423 = 123 

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

И мог ли я получить ответ об этом тоже?

a = "blahblah" 

...somehow... 

DefineVarByValue(a) 
-- Result: blahblah = 123 

Ah и еще один вопрос. как изменить «переменную таблицы» на «строку или числовую переменную»? (я имею в виду ошибку «ожидаемое число, полученная таблица» ...)

ответ

1

Все простые типы в Lua передаются по значению, поэтому ваша функция DefineVariable получает текущее значение переменной weg423, а не ее имя, которое означает, что вы не можете изменить значение функции weg423.

Если это глобальная переменная, то вы можете передать имя этой переменной (например, DefineVariable('weg423')) и функция может затем изменить значение этой переменной с помощью ссылки его в качестве ключа в _G или _ENV таблицы (_G[VariableName] = whatever).

Я до сих пор не вижу смысла в этом. Нет ничего плохого в использовании weg423 = 123.

+0

Например: 1. io.open («someCode.lua», r) 2. string.match (найти «DoDeclare (... VarName ...)») 3. VarName = 123 4. ??? 5. прибыль! // Это то, что я сейчас пытаюсь сделать. Так что я думал, что мне нужна эта функция – unknown02

+0

Я просто хотел решить этот вопрос (http://stackoverflow.com/questions/32923823) – unknown02

+0

Я имею в виду, я хочу найти всю строку «Portal (... VarName ...) «в файле по io вещь, затем объявляя все созданные VarNames. это не так хорошо, но, по крайней мере, это может решить проблему этого вопроса. эти 2 ответа не решены реальной проблемой. Решено только о коде print(). но технически, b уже объявляется при печати. так да. это оно. – unknown02

Смежные вопросы