[英]Lookup table or similar within the Arduino IDE?
再會,
我在 ESP32 上收到的用戶 ID 為 integer,我想將它們轉換為相應的名稱。 目前我用 switch 語句解決這個問題,如下所示。 有更優雅的解決方案嗎?
String ReturnName(int userId) {
Switch(userId) {
case 20:
{
return "John";
}
break;
case 44:
{
return "Maria";
}
break;
case 4:
{
return "Herrensen";
}
break;
}
}
首先,返回后休息沒有意義。 刪除它們。
Switch(userId) {
case 4: return "Herrensen";
case 20: return "John";
case 44: return "Maria";
}
恕我直言,這還不錯。
或者,您可以使用數組。
const char* lut[45];
lut[20] = "John";
lut[44] = "Maria";
lut[4] = "Herrensen";
但是 memory 如果您沒有連續的用戶 ID,這不是很有效。 目前你已經為 45 個指針保留了 memory 但只使用了 3 個所以大部分 memory 都被浪費了。 並且您必須確保僅索引數組中的有效元素。
您可以使用 hash 表,但由於 memory 有限,這在 Arduino 上通常不是一個好主意。
對於 ESP32 目標,您可以考慮使用 std::map
#include <map>
std::map<byte, const char*> list;
void setup() {
list[4] = "Anna";
list[20]= "John";
Serial.begin(115200);
for (auto const & n : list) {
Serial.print(n.first); Serial.print(":"); Serial.println(n.second);
}
}
ESP 在 RAM 和 c++ stdlib 中的限制不如真正的 Arduino
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.