2017-03-02 145 views
0

我有一個應用程序和一些代碼的作品,但我想使它成爲一個可調用的函數,例如: -傳遞變量名功能

tankFunction(「罐1」),這樣下面的功能(工作)將能夠根據輸入的參數「tank1」或「tank2」或「tank3」等工作任何坦克等等。

因此,基本上存在於存在函數中的每個變量將代表進入參數 tank1CoolManCtrlOn = reg。 tank1CoolManCtrlOn 目前上面兩個變量只針對坦克1編碼,如果「tank2」通過坦克功能(例如tankfunction)(「tank2」) 則varibables將需要

tank2CoolManCtrlOn = reg.tank2CoolManCtrlOn通常

所以變量將被##### CoolManCtrlon = REG。#### CoolManCtrlOn其中##是參數需要其中被輸入。

一旦創建了這些變量,就需要將它們傳遞給tank()函數,然後將返回的值設置爲輸出寄存器。

請幫助:)

function tank1Function() 
--Tank1 - Start 
--This is the Control Function Block Call for - Tank1 

--Below is where each variable is set for the fucntion block call. 
tank1CoolManCtrlOn = reg.tank1CoolManCtrlOn 
tank1CoolManCtrlOff = reg.tank1CoolManCtrlOff 
tank1HeatManCtrlOn = reg.tank1HeatManCtrlOn 
tank1HeatManCtrlOff = reg.tank1HeatManCtrlOff 
tank1PV = reg.tank1PV 
tank1SV = reg.tank1SV 
tank1Debounce = reg.tank1Debounce 
tank1Hysteresis = reg.tank1Hysteresis 
tank1LowAlm = reg.tank1LowAlm 
tank1HighAlm = reg.tank1HighAlm 
tank1CoolManIND = reg.tank1CoolManIND 
tank1HeatManIND = reg.tank1HeatManIND 
tank1Mode = reg.tank1Mode 
tank1CTRLType = reg.tank1CTRLType 

--This is the function block call for Tank1 where each parameter is set. 
tank1CoolManIND1, tank1HeatManIND1, tank1CoolManCtrlOn1, 
tank1CoolManCtrlOff1, tank1HeatManCtrlOn1, tank1HeatManCtrlOff1 = 
tank(tank1CoolManCtrlOn, tank1CoolManCtrlOff, tank1HeatManCtrlOn, 
tank1HeatManCtrlOff, tank1PV, tank1SV, tank1Debounce, tank1Hysteresis, 
tank1LowAlm, tank1HighAlm, tank1CoolManIND, tank1HeatManIND, tank1Mode, 
tank1CTRLType) 

--This is where the results of the function block set the required 
--Variables. 
reg.tank1CoolManIND = tank1CoolManIND1 
reg.tank1HeatManIND = tank1HeatManIND1 
reg.tank1CoolManCtrlOn = tank1CoolManCtrlOn1 
reg.tank1CoolManCtrlOff = tank1CoolManCtrlOff1 
reg.tank1HeatManCtrlOn = tank1HeatManCtrlOn1 
reg.tank1HeatManCtrlOff = tank1HeatManCtrlOff1 
--Tank1 - End 

end 

回答

2

你的變量名有很多重複的,這意味着你可以很容易地表示嵌套表格你的坦克。

local tanks = {{}, {}, {}} 
local reg = {tanks = {{}, {}, {}}} 

local function tank(t) 
    return { 
    -- Calculate fields from t. 
    } 
end 

local function tankFunction(i) 
    tanks[i] = reg.tanks[i] 
    reg.tanks[i] = tank(tanks[i]) 
end 

tankFunction(1) 

坦克表將不得不鍵如PVSVDebounce