c++ - 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);
}
解决方案
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();
}
推荐阅读
- regex - 在 Google 表格中使用正则表达式进行聚合
- git - 如何修复 Contiki 中的“致命:不是有效的对象名称 HEAD”错误?
- laravel - 如何在 chartjs 和 laravel 图表 consoletvs/chartsjs 中使用插件
- xml - 字段名称中的 FX 标记特殊字符
- java - 如何使用 OpenCSV 将 csv 导入 FX SimpleObjectProperties?
- java - Parallel Mergesort 基准测试 - 确定找到的阈值
- angular - 未捕获的类型错误:promise.fulfill 不是函数(与 Zone.js 冲突)(Angular 5)
- javascript - 更改 HTML 对象属性
- c# - 从控制器显示模态弹出 div
- asp.net-mvc - Visual Studio 2019 中的 MVC 不会像 2015 那样自动创建文件吗?