Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الدالتان 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 لأنه أقصر.

challenge icon

التحدي

سهل

اقرأ سطرًا واحدًا من المدخلات يحتوي على أعداد صحيحة مفصولة بفاصلة (على سبيل المثال، 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. طباعة كل رقم مربع في سطر خاص به
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات