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

Select و Reject

جزء من قسم المنطق وتدفق العمليات في رحلة Ruby على Coddy — الدرس 21 من 56.

تعيد الطريقة select مصفوفة جديدة تحتوي فقط على العناصر التي يعيد من أجلها القالب (block) قيمة حقيقية (truthy). هكذا تعبر لغة Ruby عن عملية "filter".

numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect   # [2, 4, 6]

reject هو العكس، فهو يحتفظ بكل العناصر التي يعيد القالب (block) لها القيمة false:

odds = numbers.reject { |n| n.even? }
puts odds.inspect    # [1, 3, 5]

كلاهما يرجعان مصفوفة جديدة؛ وتبقى المصفوفة الأصلية دون تغيير.

الكتلة البرمجية (block) هي مجرد مسند (predicate)، وأي شيء يتم تقييمه إلى true أو false سيعمل:

words = ["hi", "hello", "hey", "yo"]
long  = words.select { |w| w.length >= 3 }
puts long.inspect    # ["hello", "hey"]
challenge icon

التحدي

مبتدئ

اقرأ قائمة من الأعداد الصحيحة المفصولة بفاصلة. اطبع سطرين:

  1. الأرقام الأكبر من 10 (استخدم select)، مدمجة بـ ,
  2. الأرقام غير القابلة للقسمة على 3 (استخدم reject)، مدمجة بـ ,

للمدخلات 3,7,12,15,20، يكون المخرج:

12, 15, 20
7, 20

ورقة مرجعية

يعيد select مصفوفة جديدة تحتوي على العناصر التي تكون نتيجة الكتلة البرمجية (block) لها حقيقية (مثل "filter"):

evens = [1,2,3,4].select { |n| n.even? }  # [2, 4]

reject هو العكس، حيث يحتفظ بالعناصر التي تكون نتيجة الكتلة البرمجية (block) لها خاطئة:

odds = [1,2,3,4].reject { |n| n.even? }   # [1, 3]

كلاهما يعيد مصفوفة جديدة؛ بينما تظل المصفوفة الأصلية دون تغيير.

جرّب بنفسك

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: السطر 1، numbers > 10، مدموجة بـ ", "
# TODO: السطر 2، numbers غير قابلة للقسمة على 3، مدموجة بـ ", "
quiz iconاختبر نفسك

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

جميع دروس المنطق وتدفق العمليات