2015-07-21 3 views
1

Я пишу пользовательскую программу для программного обеспечения для моделирования. Существует переменная, называемая adj_elect05. Следующий кусок кода вызывается снова и снова. Каждый раз, когда он вызывается, я хочу, чтобы adj_elect05 (с числовым значением) увеличивался на определенную сумму, а затем записывал эту сумму в файл. Это код, который работает:Как правильно переназначить переменные в Lua?

increment = -10 

adj_elect05 = adj_elect05 + increment 

oct_voltages = io.open(O_V, "a+") 
oct_voltages:write("\n", adj_elect05) 
oct_voltages:close() 

В файле я получаю список номеров: -10, -20, -30, и так далее. Проблема в том, мне нужно дать adj_elect05 общее имя, так что он может быть изменен в дальнейшем без необходимости вносить изменения в каждый экземпляр он показывает, так что я писал:

increment = -10 
octupole_v = adj_elect05 

octupole_v = octupole_v + increment 

oct_voltages = io.open(O_V, "a+") 
oct_voltages:write("\n", octupole_v) 
oct_voltages:close() 

С этим, я получаю -10 записывается в файл навсегда, когда код работает, а не уменьшает его на десять каждый раз. Что я делаю не так?

+0

Это код в цикле/функции? Вы назначаете из 'adj_elect05' каждый раз в цикле/функции? Поскольку вы никогда не меняете 'adj_elect05', поэтому, если вы каждый раз назначаете' octupole_v' из 'adj_elect05' через цикл/функцию (во втором фрагменте), вы каждый раз отменяете свою приростную модификацию. –

+0

Это функция. Так нет способа переименовать adj_elect05? Поскольку octupole_v изменяется в первом цикле, а затем назначается adj_elect05 во втором цикле, я ожидал бы, что adj_elect05 будет увеличен. – pictorexcrucia

+1

'octupole_v' не является ссылкой на переменную' adj_elect05'. Это независимая переменная, которой присваивается одно и то же значение. Изменения в 'octupole_v' не меняют' adj_elect05'. Попробуйте 'a = 5; B = A; печать (а); печать (б); б = "Foo"; печать (а); print (b) 'например. –

ответ

0

Что вам нужно использовать локальную переменную:

local increment = -10 
local octupole_v = adj_elect05 
octupole_v = octupole_v + increment 

По умолчанию переменные считаются глобальными (в отличие от Python).

+0

Хм, я пробовал, и это не сработало. – pictorexcrucia

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