if 函数的另一种解决方案,用于减少编写
another solution for if function for less writing
你好,我正在寻找一个函数的解决方案,以减少编写代码并使代码混乱 :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);
}
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();
}
我的函数在哪里:
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();
}
}
然后您可以使用 ||
或运算符再次简化:
if(soilmoisturepercent == TESTAS) {
if (TESTAS == 30 || TESTAS == 29 || TESTA == 28) {
myFunction();
}
}
另一种选择是使用小于或大于运算符来比较范围,假设您想要任何等于或小于 30 的 TESTAS
。例如:
if (TESTAS <= 30) {
myFunction();
}
您可以使用开关盒。
switch(TESTAS){
case 30:
digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(LED_PIN, LOW);
break;
case 29:
digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(LED_PIN, LOW);
break;
case 28:
digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(LED_PIN, LOW);
break;
default:
your_fuction();
}
你好,我正在寻找一个函数的解决方案,以减少编写代码并使代码混乱 :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);
}
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();
}
我的函数在哪里:
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();
}
}
然后您可以使用 ||
或运算符再次简化:
if(soilmoisturepercent == TESTAS) {
if (TESTAS == 30 || TESTAS == 29 || TESTA == 28) {
myFunction();
}
}
另一种选择是使用小于或大于运算符来比较范围,假设您想要任何等于或小于 30 的 TESTAS
。例如:
if (TESTAS <= 30) {
myFunction();
}
您可以使用开关盒。
switch(TESTAS){
case 30:
digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(LED_PIN, LOW);
break;
case 29:
digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(LED_PIN, LOW);
break;
case 28:
digitalWrite(LED_PIN, HIGH); // turn on led 5 seconds
delay(5000);
digitalWrite(LED_PIN, LOW);
break;
default:
your_fuction();
}