首页 > 解决方案 > if 函数的另一种解决方案,减少写作

问题描述

您好,我正在寻找一种功能的解决方案,以减少编写代码并整理代码:D

问题是:是否有另一个函数或另一个使用 IF 函数来编写更少的代码?因为我需要编写多达 50 行 IF 函数

添加我如何做的代码,是否有另一种方法,因为我需要它分开功能才能工作,我从 mqtt 获取值并且不同的值需要在程序的内存中

if (TESTAS == 30 && soilmoisturepercent == TESTAS) {
    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);
  }
  else if (TESTAS == 29 && soilmoisturepercent == TESTAS) {
    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);
    }
    else if (TESTAS == 28 && soilmoisturepercent == TESTAS) {
    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);
    }

标签: c++arduino

解决方案


  if (TESTAS == 30 && soilmoisturepercent == TESTAS) {
    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);
  }
  else if (TESTAS == 29 && soilmoisturepercent == TESTAS) {
    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);
    }
    else if (TESTAS == 28 && soilmoisturepercent == TESTAS) {
    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);
    }

具有相同的内部功能:

    digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
     delay(5000);
     digitalWrite(LED_PIN, LOW);

所以你可以把它放在它自己的函数中以简化为:

  if (TESTAS == 30 && soilmoisturepercent == TESTAS) {
    myFunction();
  }
  else if (TESTAS == 29 && soilmoisturepercent == TESTAS) {
    myFunction();
  }
    else if (TESTAS == 28 && soilmoisturepercent == TESTAS) {
    myFunction();
}

myFunction 在哪里:

    void myFunction() {
       digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
       delay(5000);
       digitalWrite(LED_PIN, LOW);
    }

然后你可以看到这三个条件非常相似:

if(soilmoisturepercent == TESTAS) {
      if (TESTAS == 30) {
        myFunction();
      }
      else if (TESTAS == 29) {
        myFunction();
      }
      else if (TESTAS == 28) {
        myFunction();
    }
}

||然后您可以使用or 运算符再次简化:

if(soilmoisturepercent == TESTAS) {
      if (TESTAS == 30 || TESTAS == 29 || TESTA == 28) {
        myFunction();
      }
}

另一种选择是使用小于或大于运算符来比较一个范围,假设您想要任何TESTAS等于或小于 30。例如:

if (TESTAS <= 30) {
    myFunction();
} 

推荐阅读