تعتبر الـ Map في لغة Dart من أهم المفاهيم في مجال التجميعات (Collections). فهي تسمح لنا بتخزين البيانات بصورة مفهومة ومنظمة، حيث يتم تخزين البيانات على شكل أزواج من المفاتيح والقيم. في هذه المقالة، سنتعرف على كيفية إنشاء الـ Map في Dart وكيفية الوصول إلى القيم بناءً على المفاتيح، بالإضافة إلى خصائص الـ Map المهمة والدوال المفيدة التي يمكن استخدامها مع الـ Map.
طريقة إنشاء الـ Map في دارت:
لإنشاء الـ Map في دارت، نستخدم هذه الأقواس ({}) ونعين أزواج المفتاح والقيمة لها. فيما يلي مثال على إنشاء الـ Map بمفاتيح وقيم من نوع String:
void main() { Map<String, String> countryCapital = { 'USA': 'Washington, D.C.', 'India': 'New Delhi', 'China': 'Beijing', }; print(countryCapital); }
نتيجة الكود:
{USA: Washington, D.C., India: New Delhi, China: Beijing}
الوصول إلى القيم من الـ Map:
للوصول إلى القيمة من الـ Map باستخدام المفتاح الخاص بها، يمكننا استخدام الأقواس المربعة ([]) وتوفير المفتاح. فيما يلي مثال:
void main() { Map<String, String> countryCapital = { 'USA': 'Washington, D.C.', 'India': 'New Delhi', 'China': 'Beijing', }; print(countryCapital['USA']); }
نتيجة الكود:
Washington, D.C.
خصائص الـ Map في دارت:
توفر دارت عدة خصائص يمكن استخدامها مع الـ Map:
keys
: تعيد جميع المفاتيح في الـ Map.values
: تعيد جميع القيم في الـ Map.isEmpty
: تعيد true إذا كانت الـ Map فارغة، وإلا فإنها تعيد false.isNotEmpty
: تعيد true إذا كانت الـ Map غير فارغة، وإلا فإنها تعيد false.length
: تعيد عدد أزواج المفتاح والقيمة في الـ Map.
فيما يلي مثال يوضح استخدام هذه الخصائص:
void main() { Map<String, double> expenses = { 'sun': 3000.0, 'mon': 3000.0, 'tue': 3234.0, }; print("جميع المفاتيح في الـ Map هي: ${expenses.keys}"); print("جميع القيم في الـ Map هي: ${expenses.values}"); print("هل الـ Map فارغة: ${expenses.isEmpty}"); print("هل الـ Map غير فارغة: ${expenses.isNotEmpty}"); print("طول الـ Map هو: ${expenses.length}"); }
نتيجة الكود:
جميع المفاتيح في الـ Map هي: (sun, mon, tue) جميع القيم في الـ Map هي: (3000, 3000, 3234) هل الـ Map فارغة: false هل الـ Map غير فارغة: true طول الـ Map هو: 3
إضافة عناصر إلى الـ Map:
لإضافة زوج مفتاح وقيمة جديد إلى Map موجودة، يمكننا ببساطة تعيين قيمة لمفتاح جديد باستخدام الأقواس المربعة ([]). فيما يلي مثال:
void main() { Map<String, String> countryCapital = { 'USA': 'Washington, D.C.', 'India': 'New Delhi', 'China': 'Beijing', }; // إضافة عنصر جديد countryCapital['Japan'] = 'Tokyo'; print(countryCapital); }
نتيجة الكود:
{USA: Washington, D.C., India: New Delhi, China: Beijing, Japan: Tokyo}
تحديث عنصر في الـ Map:
لتحديث قيمة مفتاح موجود في الـ Map، يمكننا ببساطة تعيين قيمة جديدة لذلك المفتاح. فيما يلي مثال:
void main() { Map<String, String> countryCapital = { 'USA': 'Nothing', 'India': 'New Delhi', 'China': 'Beijing', }; // تحديث عنصر countryCapital['USA'] = 'Washington, D.C.'; print(countryCapital); }
نتيجة الكود:
{USA: Washington, D.C., India: New Delhi, China: Beijing}
أهم دوال الـ Map في دارت:
توفر دارت دوال مفيدة للعمل مع الـ Map:
keys.toList()
: يحول جميع المفاتيح في الـ Map إلى قائمة List.values.toList()
: يحول جميع القيم في الـ Map إلى قائمة List.containsKey('key')
: يتحقق مما إذا كانت الـ Map تحتوي على مفتاح محدد ويعيد القيمة صحيح أو خطأ.containsValue('value')
: يتحقق مما إذا كانت الـ Map تحتوي على قيمة محددة ويعيد القيمة صحيح أو خطأ.clear()
: يزيل جميع العناصر من الـ Map.removeWhere()
: يزيل جميع العناصر من الـ Map إذا كانت الشرط المعطى صحيحة.
فيما يلي مثال يوضح استخدام هذه الدوال:
void main() { Map<String, double> expenses = { 'sun': 3000.0, 'mon': 3000.0, 'tue': 3234.0, }; // تحويل المفاتيح إلى قائمة List List<String> keysList = expenses.keys.toList(); print("Keys as List: $keysList"); // تحويل القيم إلى قائمة List List<double> valuesList = expenses.values.toList(); print("Values as List: $valuesList"); // التحقق مما إذا كانت الـ Map تحتوي على مفتاح محدد bool containsKey = expenses.containsKey('sun'); print("Does Map contain 'sun' key? $containsKey"); // التحقق مما إذا كانت الـ Map تحتوي على قيمة محددة bool containsValue = expenses.containsValue(3000.0); print("Does Map contain value 3000.0? $containsValue"); // مسح الـ Map expenses.clear(); print("Map after clearing: $expenses"); }
نتيجة الكود:
Keys as List: [sun, mon, tue] Values as List: [3000.0, 3000.0, 3234.0] Does Map contain 'sun' key? true Does Map contain value 3000.0? true Map after clearing: {}
في المثال أعلاه، قمنا بتحويل المفاتيح والقيم إلى قوائم List باستخدام keys.toList()
و values.toList()
، كما قمنا بالتحقق مما إذا كانت الـ Map تحتوي على مفتاح أو قيمة محددة باستخدام containsKey('key')
و containsValue('value')
، بالإضافة إلى ذلك، قمنا بمسح الـ Map باستخدام الأسلوب clear()
.
توفر الـ Map في دارت وسيلة ملائمة لتخزين واسترداد البيانات باستخدام أزواج المفتاح والقيمة. إنها مفيدة لتنظيم ومعالجة البيانات في سيناريوهات مختلفة. في هذه المقالة، قمنا بشرح أساسيات العمل مع الـ Map في دارت، بما في ذلك إنشاء الـ Map، والوصول إلى القيم، استخدام خصائص الـ Map، إضافة وتحديث العناصر، واستخدام أهو دوال الـ Map. من خلال فهم هذه المفاهيم، يمكنك استخدام الـ Map بفعالية في برامجك في دارت.