2015-07-21 110 views
1

我正在编写仿真软件的用户程序。有一个变量叫做adj_elect05。下面的代码块被一次又一次地调用。每次它被调用时,我都希望adj_e05(具有一个数字值)增加一定量,然后将该数量写入文件。这是工作的代码:如何在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写入文件代码将永远运行,而不是每次减少10次。我究竟做错了什么?

+0

是循环/函数中的代码?您是否每次都在循环/函数中从'adj_elect05'分配?因为你永远不会改变'adj_elect05',所以如果你每次通过循环/函数(在第二个片段中)从'adj_elect05'分配给'octupole_v',你就可以每次撤消你的增量修改。 –

+0

它在一个函数中。那么是否没有办法重新命名adj_elect05?由于octupole_v在第一个循环中被更改,然后在第二个循环中被赋值为adj_elect05,所以我期望adj_elect05被递增。 – pictorexcrucia

+1

'octupole_v'不是对'adj_elect05'变量的引用。它是一个独立变量,赋予相同的值。对'octupole_v'的改变不会改变'adj_elect05'。试试'a = 5; B = A;打印的(a);打印(B); B = “foo” 的;打印的(a);打印(b)'例如。 –

回答

0

你需要的是使用局部变量:

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

默认情况下变量被视为全球(不同的Python)。

+0

嗯,我试过了,它没有工作。 – pictorexcrucia