Arduino:
การใช้แอเรย์สมาชิก

วิธีทำ:

โดยเคร่งครัด, Arduino ไม่มีการสนับสนุน built-in สำหรับอาร์เรย์แอสโซซิเอทีฟเช่นที่คุณจะพบในภาษาระดับสูง แต่ไม่ต้องกังวล เราสามารถใช้โครงสร้างและอาร์เรย์เพื่อจำลองการทำงานนี้ได้ นี่คือตัวอย่างง่ายๆเพื่อสร้าง “อาร์เรย์แอสโซซิเอทีฟ” พื้นฐานสำหรับจัดเก็บและเข้าถึงอุณหภูมิสำหรับเมืองต่างๆ

แรกสุด, กำหนดโครงสร้างเพื่อถือเมือง (คีย์) และอุณหภูมิของมัน (ค่า):

struct CityTemperature {
  String city;
  float temperature;
};

ต่อไป, เริ่มต้นอาร์เรย์ของวัตถุ CityTemperature:

CityTemperature temperatures[] = {
  {"New York", 19.5},
  {"Los Angeles", 22.0},
  {"Chicago", 17.0}
};

นี่คือวิธีที่คุณสามารถเข้าถึงและแสดงอุณหภูมิของเมืองที่เฉพาะเจาะจงได้:

void setup() {
  Serial.begin(9600);
  for(int i = 0; i < 3; i++) {
    if(temperatures[i].city == "Los Angeles") {
      Serial.print("อุณหภูมิใน Los Angeles คือ: ");
      Serial.println(temperatures[i].temperature);
    }
  }
}

void loop() {
  // ไม่มีอะไรที่นี่เพื่อตอนนี้
}

การรันโค้ดนี้จะให้ผลลัพธ์:

อุณหภูมิใน Los Angeles คือ: 22.0

ลึกลงไป

ในอดีต, ภาษาการเขียนโปรแกรมเช่น C และ C++ (ซึ่ง Arduino ได้รับการสืบทอดไวยากรณ์) ไม่ได้มีอาร์เรย์แอสโซซิเอทีฟในตัว, นำไปสู่การหาวิธีแก้ปัญหาเช่นที่แสดงข้างต้น วิธีนี้ค่อนข้างง่าย แต่ขยายขนาดได้ไม่ดีเมื่อขนาดข้อมูลเพิ่มขึ้นเนื่องจากมีเวลาค้นหาที่ O(n)

ภาษาเช่น Python นำเสนอ dictionaries, และ JavaScript มี objects สำหรับวัตถุประสงค์นี้, ทั้งคู่มีประสิทธิภาพมากขึ้นสำหรับการจัดการกับคู่คีย์-ค่า ใน Arduino, เมื่อประสิทธิภาพและคุณภาพกลายเป็นสิ่งสำคัญ, นักพัฒนาอาจเลือกใช้โครงสร้างข้อมูลที่เฉพาะเจาะจงมากขึ้น, เช่น ตารางแฮช, ซึ่งได้รับการดำเนินการผ่านไลบรารี

แม้ว่า Arduino จะไม่สนับสนุนอาร์เรย์แอสโซซิเอทีฟโดยตรง, ชุมชนได้พัฒนาไลบรารีเช่น HashMap ที่สามารถเพิ่มเข้าไปในโปรเจ็กต์ของคุณเพื่อให้มีความสามารถที่คล้ายคลึงกับประสิทธิภาพที่ดีกว่าวิธี DIY ไลบรารีเหล่านี้มักนำเสนอวิธีการที่งดงามและมีประสิทธิภาพมากขึ้นในการจัดการอาร์เรย์แอสโซซิเอทีฟ, โดยเฉพาะสำหรับโปรเจกต์ที่ซับซ้อนมากขึ้น