如何解决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”,它会非常复杂。提前致谢
解决方法
为了简化代码使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。