المخلوط Enumerable في روبي

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


يوفر المخلوط Enumerable مجموعة من الأصناف مع توابع بحث ونقل (traversal) عديدة قادرة على ترتيب عناصر مجموعة مع بعضها بعضًا. يجب أن يوفر الصنف التابع each الذي يعيد العضو التالي من المجموعة. إن استعمل التابع max، أو mix، أو sort، فيجب أن يُوازَن بين الكائنات في المجموعة باستعمال المعامل <=> الذي تعتمد عليه تلك التوابع في ترتيب عناصر المجموعة الواحدة مع بعضها بعضًا.

توابع النسخة العامة

all?‎

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

any?‎

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

chunk

يُمرِّر كل عنصر من عناصر المجموعة التي استدعيت معه إلى الكتلة المعطاة ثمَّ يُقطِّعها إلى أجزاء (قطع صغيرة) بحسب القيمة المعادة من الكتلة.

chunk_while

ينشئ مُعدِّدًا لكل جزء من العناصر المجمَّعة سويةً. تُعرَّف بداية الأجزاء (chunks) عبر الكتلة المعطاة.

collect

يعيد مصفوفة جديدة تحوي نتائج تنفيذ الكتلة المعطاة دفعةً واحدةً مع كل عنصر من عناصر المُعدِّد الذي استدعي معه.

collect_concat

يعيد مصفوفة جديدة مع نتائج متصلة لتنفيذ الكتلة المعطاة مع كل عنصر من عناصر المُعدِّد الذي استدعي معه.

count

يعيد عدد العناصر الموجودة في المُعدِّد الذي استدعي معه.

cycle

يستدعي الكتلة المعطاة مع كل عنصر من عناصر المُعدِّد الذي استدعي معه عددًا محدَّدًا من المرات أو إلى ما لانهاية إن مُرِّرت القيمة nil إليه أو لم يمُرَّر أي شيء.

detect

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

drop

يحذف أول عدة عناصر من المُعدِّد الذي استدعي معه ثم يعيد بقية العناصر في مصفوفة.

drop_while

يحذف العناصر الأولى المحقِّقة لشرط معيِّن من المُعدِّد المعطى ثم يعيد مصفوفة تحوي العناصر المتبقية.

each_cons

يُكرِّر الكتلة المعطاة على كل مصفوفة من n عنصر متتالي من عناصر الكائن القابل للتعداد الذي استدعي معه.

each_entry

يستدعي الكتلة المعطاة مرةً واحدةً على كل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه.

each_slice

يكرِّر الكتلة المعطاة على كل قطعة مكونة من n عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه.

each_with_index

يستدعي الكتلة المعطاة مع وسيطين هما: العنصر نفسه وفهرسه لكل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه. 

each_with_object

يكرِّر الكتلة المعطاة على كل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه مع كائن اعتباطي (الكائن المُمرَّر إليه) ثم يعيد هذا الكائن.

entries

يعيد مصفوفة تحوي العناصر الموجودة في الكائن القابل للتعداد الذي استدعي معه.

find

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

find_all

يعيد مصفوفة تحوي جميع العناصر المحققة للكتلة المعطاة (أي التي تعيدها معها قيمة صحيحة [true value]) من عناصر الكائن القابل للتعداد الذي استدعي معه.

find_index

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

first

يعيد أول عنصر أو أول n عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه.

flat_map

يعيد مصفوفة جديدة تحوي النتائج المجمَّعة الناتجة عن تنفيذ الكتلة المعطاة مع كل عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه.

grep

يعيد مصفوفة تحوي كل عنصر مطابق لنمط محدَّد من عناصر الكائن القابل للتعداد الذي استدعي معه.

grep_v

يعدُّ نسخة معاكسة للتابع grep، إذ يعيد مصفوفة تحوي كل العناصر الغير مطابقة لنمط محدَّد من عناصر الكائن القابل للتعداد المعطى.

group_by

يجمِّع عناصر الكائن القابل للتعداد الذي استدعي معه في مجموعات بحسب النتيجة المقابلة لكل عنصر التي تعيدها الكتلة المعطاة بعد تمريره إليها.

include?‎

يتحقق من احتواء كائن قابل للتعداد على عنصر محدَّد.

inject

يجمع جميع عناصر الكائن القابل للتعداد الذي استدعي معه عبر تطبيق عملية ثنائية تُحدَّد بوساطة كتلة أو رمز يسمي تابعًا أو معاملًا.

lazy

يعيد مُعدِّدًا كسولًا (lazy enumerator) تُعدِّد (enumerate) توابعه القيم بحسب الحاجة.

map

يعيد مصفوفة جديدة تحوي النتائج المقابلة لكل عنصر من عناصر الكائن القابل للتعداد المعادة من الكتلة المعطاة بعد تمريره إليها.

max

يبحث عن قيمة أكبر عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه ثم يعيده.

max_by

يعيد العنصر الذي تعيد الكتلة المعطاة أكبر قيمة مقابلة له بعد تمرير عناصر الكائن القابل للتعداد إليها كلٌّ على حدة.

member?‎

يتحقق من احتواء كائن قابل للتعداد على عنصر محدَّد (مرة واحدة أو أكثر).

min

يبحث عن قيمة أصغر عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه ثم يعيده.

min_by

يعيد العنصر الذي تعيد الكتلة المعطاة أًصغر قيمة مقابلة له بعد تمرير عناصر الكائن القابل للتعداد إليها كلٌّ على حدة.

minmax

يبحث عن قيمة أصغر وأكبر عنصر من عناصر الكائن القابل للتعداد الذي استدعي معه ثم يعيدهما في مصفوفة.

minmax_by

يعيد العنصرين الذيَن تعيد الكتلة المعطاة أًصغر وأكبر قيمة مقابلة لهما على التوالي بعد تمرير عناصر الكائن القابل للتعداد إليها كلٌّ على حدة.

none?‎

يتحقق من خلو كائن قابل للتعداد من أي عنصر محقِّق للكتلة المعطاة (لا تعيد مع أي عنصر القيمة true) أو مطابق للنمط محدَّد.

one?‎

يتحقق من احتواء كائن قابل للتعداد على عنصر واحد فقط محقِّق للكتلة المعطاة (لا تعيد مع أي عنصر القيمة true باستثناء عنصر واحد فقط) أو مطابق للنمط محدَّد.

partition

يعيد مصفوفتين تحتوي الأولى على عناصر الكائن القابل للتعداد المحققة للكتلة المعطاة (التي أعادت عند تمريرها إليها قيمة صحيحة) وتحتوي الأخرى على العناصر المتبقية.

reduce

يجمع جميع عناصر الكائن القابل للتعداد الذي استدعي معه عبر تطبيق عملية ثنائية تُحدَّد بوساطة كتلة أو رمز يسمي تابعًا أو معاملًا.

reject

يعيد مصفوفة تحوي جميع عناصر الكائن القابل للتعداد الذي استدعي معه باستثناء تلك التي لم تحقق الكتلة المعطاة (أي التي أعادت معها القيمة false عند تمريرها إليها).

reverse_each

ينشئ مصفوفة مؤقتة تحوي عناصر الكائن القابل للتعداد ثم يمر عليها (يستعملها) بترتيب معاكس.

select

يعيد مصفوفة تحتوي على جميع عناصر الكائن القابل للتعداد الذي استدعي معه باستثناء تلك التي تحقق الكتلة المعطاة (أي التي تعيد معها قيمة صحيحة عند تمريرها إليها).

slice_after

يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد نهايتها عبر نمطٍ محدِّدٍ أو كتلةٍ معطاةٍ ثم يعيد مُعدِّد لكل جزء من الأجزاء الناتجة.

slice_before

يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد بدايتها عبر نمطٍ محدِّدٍ أو كتلةٍ معطاةٍ ثم يعيد مُعدِّد لكل جزء من الأجزاء الناتجة.

slice_when

يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد بدايتها عبر كتلةٍ معطاةٍ ثم يعيد مُعدِّد لكل جزء من الأجزاء الناتجة.

sort

sort_by

sum

take

take_while

to_a

to_h

uniq

zip

مصادر