map وselect وreject
التحويل والتصفية
map وselect وreject درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
التحويل باستخدام map
ينشئ map مصفوفة جديدة عبر تشغيل الكتلة على كل عنصر. ولا تتغير المصفوفة الأصلية.
nums = [1, 2, 3]
doubled = nums.map { |n| n * 2 }
puts doubled.inspect
puts nums.inspectmap مع السلاسل النصية
يمكن لـ map تحويل أي نوع من القيم، مثل تحويل الكلمات إلى أحرف كبيرة.
words = ["red", "green"]
puts words.map { |w| w.upcase }.inspectالاختصار باستخدام Symbol
عندما تستدعي الكتلة أسلوبًا واحدًا فقط، استخدموا &:method كاختصار.
words = ["a", "b", "c"]
puts words.map(&:upcase).inspectmap مع الفهرس
سلسِلوا with_index عندما تحتاجون أيضًا إلى المواضع.
letters = %w[a b c]
result = letters.map.with_index { |l, i| "#{i}:#{l}" }
puts result.inspectالتصفية باستخدام select
يحتفظ select، وهو اسم مستعار لـfilter، بالعناصر التي تكون الكتلة عندها صحيحة فقط.
nums = [1, 2, 3, 4, 5, 6]
evens = nums.select { |n| n.even? }
puts evens.inspectتصفية السلاسل النصية
يعمل select مع أي شرط، مثل الاحتفاظ بالكلمات الطويلة.
words = ["hi", "hello", "hey", "welcome"]
puts words.select { |w| w.length > 3 }.inspectالإزالة باستخدام reject
يُعد reject عكس select؛ فهو يزيل العناصر التي تكون الكتلة عندها صحيحة.
nums = [1, 2, 3, 4]
puts nums.reject { |n| n.even? }.inspectتسلسل map وselect
بما أن كل استدعاء يعيد مصفوفة جديدة، يمكنكم تسلسل الأساليب في مسار معالجة.
nums = [1, 2, 3, 4, 5]
result = nums.select { |n| n.odd? }.map { |n| n * 10 }
puts result.inspectfilter_map
يجمع filter_map بين التصفية والتحويل في مرور واحد؛ إذ يحتفظ بنتائج الكتلة غير المساوية لـ false.
nums = [1, 2, 3, 4]
result = nums.filter_map { |n| n * 2 if n.even? }
puts result.inspectflat_map
يحوّل flat_map العناصر ثم يبسط مستوى واحدًا من المصفوفات المتداخلة.
pairs = [[1, 2], [3, 4]]
puts pairs.flat_map { |p| p }.inspectpartition
يقسم partition مجموعةً إلى مصفوفتين: العناصر المطابقة وغير المطابقة.
nums = [1, 2, 3, 4, 5]
evens, odds = nums.partition { |n| n.even? }
puts evens.inspect
puts odds.inspectاختبار سريع
تحققوا من فهمكم للتحويل والتصفية.
مراجعة
أتقنتم التحويل والتصفية:
- استخدام
mapللتحويل، مع اختصار&:method select/filterوreject- التسلسل و
filter_mapوflat_mapوpartition
التالي: reduce وeach_with_object للتجميع.
puts [1, 2, 3, 4].select(&:even?).map { |n| n * n }.inspectالأسئلة الشائعة
هل درس «map وselect وreject» مجاني؟
نعم — نص درس «map وselect وreject» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «map وselect وreject»؟
التحويل والتصفية تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «map وselect وreject»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إنشاء النطاقات
- وحدة Enumerable
- map وselect وreject
- reduce وeach_with_object