2015-07-21 125 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