التابع Enumerable.find في روبي

من موسوعة حسوب
مراجعة 07:16، 30 ديسمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إنشاء الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يمرِّر التابع find كل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه إلى الكتلة المعطاة ثم يعيد أول عنصر محقق لها (لا تعيد معه القيمة false). إن لم يُعثَر على أي عنصر متطابق، فسيستدعي التابع find التابع المُمرَّر إليه ويعيد القيمة التي يعيدها، أو تعاد القيمة nil إن يُعطَ ذلك التابع.

إن لم تُعطَ أية كتلة، فسيعيد التابع كائنًا من النوع Enumerator.

البنية العامة

find(ifnone = nil) { |obj| block }  obj or nil
find(ifnone = nil)  an_enumerator

المعاملات

ifnone

التابع المراد تنفيذه وإعادة القيمة الناتجة عنه إن لم يُعثَر على العنصر المحقق للكتلة المعطاة. القيمة الافتراضية هي: nil.

القيمة المعادة

يعاد أول عنصر محقق للكتلة block (أي لا تعيد معه القيمة false) من عناصر الكائن القابل للتعداد المعطى بعد تمريره إليها، أو يعاد ناتج تنفيذ التابع ifnone إن لم يُعثَر على أي عنصر محقق للكتلة، أو تعاد القيمة nil خلاف ذلك. إن لم تُعطَ أية كتلة، فسيعاد كائن من النوع Enumerator.

أمثلة

مثال على استعمال التابع find:

(1..100).detect  => #<Enumerator: 1..100:detect>
(1..100).find    => #<Enumerator: 1..100:find>

(1..10).detect   { |i| i % 5 == 0 and i % 7 == 0 }   #=> nil
(1..10).find     { |i| i % 5 == 0 and i % 7 == 0 }   #=> nil
(1..100).detect  { |i| i % 5 == 0 and i % 7 == 0 }   #=> 35
(1..100).find    { |i| i % 5 == 0 and i % 7 == 0 }   #=> 35

انظر أيضًا

  • التابع find_all: يعيد مصفوفة تحوي جميع العناصر المحققة للكتلة المعطاة (أي التي تعيدها معها قيمة صحيحة [true value]) من عناصر الكائن القابل للتعداد الذي استدعي معه.
  • التابع find_index: يوازن كل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه مع قيمة محدَّدة ثم يعيد فهرس أول قيمة مطابقة، أو يمرِّر تلك العناصر إلى الكتلة المعطاة ويعيد فهرس أول عنصر محقق لها (لا تعيد معه القيمة false).

مصادر