استخدام مصفوفة الفهارس في بيرل لاختيار عناصر محددة: دليل بسيط
في لغة بيرل، يمكنك بسهولة اختيار عناصر محددة من مصفوفة باستخدام مصفوفة من الأرقام الصحيحة (الفهارس). يوجد طرق عديدة لتحقيق ذلك بشكل فعال، ولكنني سأركز على الطريقة التي تلبي احتياجاتك.
لديك مصفوفة @arr
التي تحتوي على العناصر (a، b، c، d، e، f)، ومصفوفة @arr2
التي تحتوي على الفهارس (0، 2، 4) التي تريد اختيار العناصر المقابلة لها من @arr
.
في البداية، يمكنك استخدام وظيفة map
لتحويل مصفوفة الفهارس إلى مصفوفة من العناصر:
perl@arr = qw(a b c d e f);
@arr2 = qw(0 2 4);
@arr3 = map { $arr[$_] } @arr2;
تستخدم map
هنا لتطبيق تعبير لكل فهرس في @arr2
، حيث يقوم التعبير بإرجاع العنصر الموجود في @arr
الذي يتوافق مع الفهرس.
الكود أعلاه سينتج @arr3
بالقيم (a، c، e)، وهي العناصر الموجودة في @arr
والتي تتوافق مع الفهارس في @arr2
.
هذا الحلا لديه القدرة على التعامل مع مصفوفات ذات أحجام مختلفة دون الحاجة إلى استخدام حلقات، ويوفر لك حلاً فعالاً وفعالاً من حيث استخدام الذاكرة.
المزيد من المعلومات
بالطبع، دعنا نوسع قليلاً على النقاط التي تم التطرق إليها في الكود السابق.
في لغة بيرل، القائمة @arr
هي قائمة تحتوي على متغيرات من نوع نصي (سلاسل الأحرف). يتم تعريف المصفوفة @arr2
باستخدام qw
، وهي أختصار لـ “quote words”، وتساعد في تحديد السلاسل داخل المصفوفة بدون الحاجة إلى استخدام علامات اقتباس.
الكود يستخدم map
، وهي وظيفة تقوم بتطبيق تعبير على كل عنصر في المصفوفة المعطاة، وتجمع النتائج في مصفوفة جديدة. في هذا السياق، يتم استخدام map
لإنشاء @arr3
من خلال اختيار العناصر المتوافقة مع الفهارس في @arr2
.
يمكن تحسين الكود بتضمين التحقق من صحة الفهارس لضمان عدم الوصول إلى فهارس غير صالحة. على سبيل المثال:
perl@arr = qw(a b c d e f);
@arr2 = qw(0 2 4);
@arr3 = map { $arr[$_] } grep { $_ >= 0 && $_ < @arr } @arr2;
هنا، تم إضافة grep
للتحقق من صحة الفهارس، حيث يتم اختيار الفهارس التي تكون أكبر من أو تساوي صفر وأقل من حجم @arr
. هذا يمنع الوصول إلى فهارس غير صالحة ويضيف طبقة إضافية من التأكيد على صحة البيانات.
الكود النهائي يقدم حلاً فعالاً وآمناً لاختيار العناصر باستخدام مصفوفة من الفهارس في بيرل.