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

من موسوعة حسوب

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

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

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

المعاملات

ifnone

التابع المراد تنفيذه عند عدم مطابقة الكتلة لأي عنصر من عناصر المُعدِّد المعطى. القيمة الافتراضية هي: nil.

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

يعاد أول عنصر لا تعيد الكتلة معه القيمة false بعد تمرير عناصر المُعدِّد إليها تباعًا، أو يعاد ناتج تنفيذ التابع ifnone إن لم يتطابق أي عنصر، أو تعاد القيمة nil إن لم يُعطَ التابع ifnone.

أمثلة

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

(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

انظر أيضًا

  • التابع collect: يعيد مصفوفة جديدة تحوي نتائج تنفيذ الكتلة المعطاة دفعةً واحدةً مع كل عنصر من عناصر المُعدِّد الذي استدعي معه.
  • التابع drop_while: يحذف العناصر الأولى المحقِّقة لشرط معيِّن من المُعدِّد المعطى ثم يعيد مصفوفة تحوي العناصر المتبقية.

مصادر