程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Lua 脚本:将多个“if”转换成更简单的形式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Lua 脚本:将多个“if”转换成更简单的形式?

开发过程中遇到Lua 脚本:将多个“if”转换成更简单的形式的问题如何解决?下面主要结合日常开发的经验,给出你关于Lua 脚本:将多个“if”转换成更简单的形式的解决方法建议,希望对你解决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      
   @R_335_10586@L_1 = OUTPUT_SHOP1 + OUTPUT_SHOP2
   addr_setword("@W_HDW19",@R_335_10586@L_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   
   @R_335_10586@L_1 = OUTPUT_SHOP1 + OUTPUT_SHOP2
   addr_setword("@W_HDW19",@R_335_10586@L_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 @R_335_10586@L = 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
      @R_335_10586@L = @R_335_10586@L + OUTPUT_SHOP[j]
   end
   addr_setword("@W_HDW19",@R_335_10586@L)

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

end

大佬总结

以上是大佬教程为你收集整理的Lua 脚本:将多个“if”转换成更简单的形式全部内容,希望文章能够帮你解决Lua 脚本:将多个“if”转换成更简单的形式所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。