שימוש במערכים אסוציאטיביים

Dart:
שימוש במערכים אסוציאטיביים

איך עושים:

Dart מציע תחביר פשוט ליצירה והתעסקות עם Maps. להלן דוגמאות המדגימות פעולות בסיסיות כמו יצירה, הוספת אלמנטים ואיתור ערכים.

void main() {
  // יצירת מפה
  var fruitColors = {
    'apple': 'red',
    'banana': 'yellow',
    'grape': 'purple'
  };

  // הוספת זוג מפתח-ערך חדש
  fruitColors['orange'] = 'orange';

  // גישה לערך לפי המפתח
  print(fruitColors['apple']); // פלט: red

  // עדכון ערך
  fruitColors['banana'] = 'green';

  // סיבוב על המפה
  fruitColors.forEach((fruit, color) {
    print('$fruit: $color');
  });
  // פלט לדוגמה:
  // apple: red
  // banana: green
  // grape: purple
  // orange: orange
}

עבור מבני נתונים מורכבים או פונקציונליות מורחבת, מתכנתי Dart לעיתים מסתמכים על ספריות נוספות. ספרייה כזו היא collection שמספקת סוגים מתקדמים של אוספים וכלים עזר. למרות ש-collection לא משנה את הדרך הבסיסית בה מטפלים ב-Maps, היא מעשירה אותם בפונקציות עזר וסוגים מתקדמים יותר של אוספים. הנה איך אפשר להשתמש בה עבור משימה ספציפית יותר, כמו מיון של מפה לפי הערכים שלה:

ראשית, וודא שהחבילה collection כלולה בקובץ pubspec.yaml שלך:

dependencies:
  collection: ^1.15.0

לאחר מכן, ניתן להשתמש בה כך:

import 'package:collection/collection.dart';

void main() {
  var fruitColors = {
    'apple': 'red',
    'banana': 'yellow',
    'grape': 'purple',
    'orange': 'orange'
  };

  // מיון המפה לפי הערכים (צבעים)
  var sortedFruitsByColor = SplayTreeMap.from(
    fruitColors,
    (key1, key2) => fruitColors[key1]!.compareTo(fruitColors[key2]!)
  );

  print(sortedFruitsByColor);
  // פלט:
  // {orange: orange, apple: red, banana: yellow, grape: purple}
}

דוגמה זו מדגימה מיון של ערכי המפה לפי הערכים שלהם, ומציגה איך Dart והאקוסיסטם האקטיבי שלה יכולים לטפל במערכי אסוציאציות באופן זריז עבור מניפולציה מתקדמת של נתונים.