Lua脚本: 将多个"if"转换为简单形式

我正在尝试创建一个条件,根据风扇数量和空气流量计算百分比。这是我的解决方法

function System01()

CFM_SHOP1 = addr_getword("@W_HDW1")
CFM_SHOP2 = addr_getword("@W_HDW2")
STATUS_SHOP1 = addr_getbit("@B_M1")
STATUS_SHOP2 = addr_getbit("@B_M2")
OUTPUT_SHOP1 = addr_getword("@W_HDW10")
OUTPUT_SHOP2 = addr_getword("@W_HDW11")

CFM_1 = CFM_SHOP1 + CFM_SHOP2

if STATUS_SHOP1 == 1 then
   OUTPUT_SHOP1 = CFM_SHOP1 * 10000 / CFM_1
   addr_setword("@W_HDW10", OUTPUT_SHOP1)
   if STATUS_SHOP2 == 1 then
      OUTPUT_SHOP2 = CFM_SHOP2 * 10000 / CFM_1
      addr_setword("@W_HDW11", OUTPUT_SHOP2)
   end
   TOTAL_1 = OUTPUT_SHOP1 + OUTPUT_SHOP2
   addr_setword("@W_HDW19", TOTAL_1)
end

if STATUS_SHOP2 == 1 then
   OUTPUT_SHOP2 = CFM_SHOP2 * 10000 / CFM_1
   addr_setword("@W_HDW11", OUTPUT_SHOP2)
   if STATUS_SHOP1 == 1 then
      OUTPUT_SHOP1 = CFM_SHOP1 * 10000 / CFM_1
      addr_setword("@W_HDW10", OUTPUT_SHOP1)
   end
   TOTAL_1 = OUTPUT_SHOP1 + OUTPUT_SHOP2
   addr_setword("@W_HDW19", TOTAL_1)
end

addr_setbit("@B_M1", STATUS_SHOP1)
addr_setbit("@B_M2", STATUS_SHOP2)
addr_setbit("@B_M3", STATUS_SHOP3)

end

有没有办法简化它?请注意,这只是我给出的两个例子。总共有9个风扇,如果我只使用'if'将会非常复杂。提前感谢您的帮助。

点赞
用户1847592
用户1847592

为了简化代码,使用 for 循环

function System01()

   local CFM_SHOP = {}
   local CFM = 0
   for j = 1, 9 do
      CFM_SHOP[j] = addr_getword("@W_HDW"..tostring(j))
      CFM = CFM + CFM_SHOP[j]
   end

   local STATUS_SHOP = {}
   for j = 1, 9 do
      STATUS_SHOP[j] = addr_getbit("@B_M"..tostring(j))
   end

   local OUTPUT_SHOP = {}
   for j = 1, 9 do
      OUTPUT_SHOP[j] = addr_getword("@W_HDW"..tostring(j+9))
   end

   local TOTAL = 0
   for j = 1, 9 do
      if STATUS_SHOP[j] == 1 then
         OUTPUT_SHOP[j] = CFM_SHOP[j] * 10000 / CFM
         addr_setword("@W_HDW"..tostring(j+9), OUTPUT_SHOP[j])
      end
      TOTAL = TOTAL + OUTPUT_SHOP[j]
   end
   addr_setword("@W_HDW19", TOTAL)

   for j = 1, 9 do
      addr_setbit("@B_M"..tostring(j), STATUS_SHOP[j])
   end

end
2021-07-08 08:47:36