将变量名传递给函数

我有一个应用程序和一些代码,它们能够工作,但是我想将其变成可调用的函数,例如:

tankFunction("tank1")

这样下面的函数(已经工作)将能够根据输入的参数"tank1""tank2""tank3"等为任何一个油箱工作。

因此,基本上现有函数中包含的每个变量将表示输入参数:

tank1CoolManCtrlOn = reg.tank1CoolManCtrlOn

目前,上述两个变量仅针对"tank1"编码,如果传递tankfucntion("tank2"),那么变量需要为:

tank2CoolManCtrlOn = reg.tank2CoolManCtrlOn

因此,变量将是####CoolManCtrlOn = reg.####CoolManCtrlOn,其中####是需要输入参数的位置。

一旦创建了这些变量,它们就需要传递给tank()函数,然后返回值就需要设置为输出寄存器中的值。

function tank1Function()
--Tank1 - Start
--这是- Tank1的控制功能块调用

--下面就是为函数块调用设置每个变量的位置
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

--这是Tank1的函数块调用,其中每个参数都设置好了。
 tank1CoolManIND1, tank1HeatManIND1, tank1CoolManCtrlOn1,
 tank1CoolManCtrlOff1, tank1HeatManCtrlOn1, tank1HeatManCtrlOff1  =
 tank(tank1CoolManCtrlOn, tank1CoolManCtrlOff, tank1HeatManCtrlOn,
 tank1HeatManCtrlOff, tank1PV, tank1SV, tank1Debounce, tank1Hysteresis,
 tank1LowAlm, tank1HighAlm, tank1CoolManIND, tank1HeatManIND, tank1Mode,
 tank1CTRLType)

 --这是函数块的结果将所需变量设置好的地方
 reg.tank1CoolManIND = tank1CoolManIND1
 reg.tank1HeatManIND = tank1HeatManIND1
 reg.tank1CoolManCtrlOn = tank1CoolManCtrlOn1
 reg.tank1CoolManCtrlOff =  tank1CoolManCtrlOff1
 reg.tank1HeatManCtrlOn =  tank1HeatManCtrlOn1
 reg.tank1HeatManCtrlOff = tank1HeatManCtrlOff1
--Tank1 - End

end
点赞
用户3574628
用户3574628

你的变量名有很多重复,因此可以使用嵌套表格轻松表示你的坦克。

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

local function tank(t)
  return {
    -- 根据t计算字段。
  }
end

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

tankFunction(1)

坦克表格会有PVSVDebounce等键。

2017-03-02 06:08:23