الدالتان Map و Collect
جزء من قسم الأساسيات في رحلة Ruby على Coddy — الدرس 68 من 88.
بينما تعد each رائعة لتنفيذ إجراءات على العناصر، فإنك ترغب أحياناً في تحويل مصفوفة إلى مصفوفة جديدة. إن الأسلوب map (والذي يسمى أيضاً collect) يقوم بهذا تماماً: فهو ينشئ مصفوفة جديدة تحتوي على نتائج تشغيل الكتلة البرمجية (block) الخاصة بك على كل عنصر.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # المخرجات: 2, 4, 6, 8الفرق الرئيسي عن each هو أن map تُرجع مصفوفة جديدة بالقيم المحولة. تبقى المصفوفة الأصلية دون تغيير.
إليك مثالاً عملياً يحول درجات الحرارة من الدرجة المئوية إلى فهرنهايت:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # المخرجات: 32, 68, 212يمكنك أيضاً استخدام map مع السلاسل النصية:
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # المخرجات: Alice, Bobالطرق map و collect متطابقتان. توفر Ruby كلا الاسمين، لذا يمكنك استخدام أيهما يسهل قراءته أكثر في كودك. يفضل معظم مطوري Ruby استخدام map لأنه أقصر.
التحدي
سهلاقرأ سطرًا واحدًا من المدخلات يحتوي على أعداد صحيحة مفصولة بفاصلة (على سبيل المثال، 2,4,6,8,10).
قم بتقسيم المدخلات إلى مصفوفة من الأعداد الصحيحة، ثم استخدم التابع map لإنشاء مصفوفة جديدة حيث يتم تربيع كل رقم (ضربه في نفسه).
اطبع كل عنصر من عناصر المصفوفة المربعة الجديدة في سطر مستقل.
على سبيل المثال، إذا كانت المدخلات 2,4,6,8,10، يجب أن تكون المخرجات:
4
16
36
64
100إذا كانت المدخلات 1,2,3,4,5، يجب أن تكون المخرجات:
1
4
9
16
25إذا كانت المدخلات 3,7,11، يجب أن تكون المخرجات:
9
49
121إذا كانت المدخلات 10، يجب أن تكون المخرجات:
100ورقة مرجعية
تقوم طريقة map (تسمى أيضاً collect) بتحويل مصفوفة إلى مصفوفة جديدة عن طريق تطبيق كتلة برمجية (block) على كل عنصر. وهي تعيد مصفوفة جديدة تحتوي على القيم المحولة، مع ترك المصفوفة الأصلية دون تغيير.
numbers = [1, 2, 3, 4]
doubled = numbers.map { |n| n * 2 }
puts doubled # المخرجات: 2, 4, 6, 8مثال على تحويل درجات الحرارة:
celsius = [0, 20, 100]
fahrenheit = celsius.map { |c| c * 9 / 5 + 32 }
puts fahrenheit # المخرجات: 32, 68, 212مثال مع النصوص (strings):
names = ["alice", "bob"]
capitalized = names.map { |name| name.capitalize }
puts capitalized # المخرجات: Alice, Bobالطريقتان map و collect متطابقتان. يفضل معظم مطوري Ruby استخدام map.
جرّب بنفسك
# قراءة المدخلات المفصولة بفواصل
input = gets.chomp
# المهام المطلوبة: اكتب الكود الخاص بك أدناه
# 1. تقسيم سلسلة المدخلات إلى مصفوفة من الأعداد الصحيحة
# 2. استخدام طريقة map لتربيع كل رقم
# 3. طباعة كل رقم مربع في سطر خاص بهيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ