الفرق بين المراجعتين لصفحة: «Ruby/Enumerable»
جميل-بيلوني (نقاش | مساهمات) لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
{{DISPLAYTITLE:المخلوط <code> | {{DISPLAYTITLE:المخلوط <code>Enumerable</code> في روبي}} | ||
يوفر المخلوط <code>Enumerable</code> مجموعة من الأصناف مع توابع بحث ونقل (traversal) عديدة قادرة على ترتيب عناصر مجموعة مع بعضها بعضًا. يجب أن يوفر الصنف التابع <code>each</code> الذي يعيد العضو التالي من المجموعة. إن استعمل التابع <code>max</code>، أو <code>mix</code>، أو <code>sort</code>، فيجب أن يُوازَن بين الكائنات في المجموعة باستعمال المعامل <code><=></code> الذي تعتمد عليه تلك التوابع في ترتيب عناصر المجموعة الواحدة مع بعضها بعضًا. | يوفر المخلوط <code>Enumerable</code> مجموعة من الأصناف مع توابع بحث ونقل (traversal) عديدة قادرة على ترتيب عناصر مجموعة مع بعضها بعضًا. يجب أن يوفر الصنف التابع <code>each</code> الذي يعيد العضو التالي من المجموعة. إن استعمل التابع <code>max</code>، أو <code>mix</code>، أو <code>sort</code>، فيجب أن يُوازَن بين الكائنات في المجموعة باستعمال المعامل <code><=></code> الذي تعتمد عليه تلك التوابع في ترتيب عناصر المجموعة الواحدة مع بعضها بعضًا. | ||
سطر 83: | سطر 83: | ||
===<code>[[Ruby/Enumerable/inject|inject]]</code>=== | ===<code>[[Ruby/Enumerable/inject|inject]]</code>=== | ||
يجمع جميع عناصر الكائن القابل للتعداد الذي استدعي معه عبر تطبيق عملية ثنائية تُحدَّد بوساطة كتلة أو رمز يسمي تابعًا أو معاملًا. | |||
===<code>[[Ruby/Enumerable/lazy|lazy]]</code>=== | ===<code>[[Ruby/Enumerable/lazy|lazy]]</code>=== | ||
يعيد [[Ruby/Enumerator::Lazy|مُعدِّدًا كسولًا]] (lazy enumerator) تُعدِّد (enumerate) توابعه القيم بحسب الحاجة. | |||
===<code>[[Ruby/Enumerable/map|map]]</code>=== | ===<code>[[Ruby/Enumerable/map|map]]</code>=== | ||
يعيد مصفوفة جديدة تحوي النتائج المقابلة لكل عنصر من عناصر [[Ruby/Enumerator|الكائن القابل للتعداد]] المعادة من الكتلة المعطاة بعد تمريره إليها. | |||
===<code>[[Ruby/Enumerable/max|max]]</code>=== | ===<code>[[Ruby/Enumerable/max|max]]</code>=== | ||
يبحث عن قيمة أكبر عنصر من عناصر [[Ruby/Enumerator|الكائن القابل للتعداد]] الذي استدعي معه ثم يعيده. | |||
===<code>[[Ruby/Enumerable/max_by|max_by]]</code>=== | ===<code>[[Ruby/Enumerable/max_by|max_by]]</code>=== | ||
يعيد العنصر الذي تعيد الكتلة المعطاة أكبر قيمة مقابلة له بعد تمرير عناصر الكائن القابل للتعداد إليها كلٌّ على حدة. | |||
===<code>[[Ruby/Enumerable/member-3F|member?]]</code>=== | ===<code>[[Ruby/Enumerable/member-3F|member?]]</code>=== | ||
يتحقق من احتواء [[Ruby/Enumerable|كائن قابل للتعداد]] على عنصر محدَّد (مرة واحدة أو أكثر). | يتحقق من احتواء [[Ruby/Enumerable|كائن قابل للتعداد]] على عنصر محدَّد (مرة واحدة أو أكثر). | ||
===<code>[[Ruby/Enumerable/min|min]]</code>=== | ===<code>[[Ruby/Enumerable/min|min]]</code>=== | ||
يبحث عن قيمة أصغر عنصر من عناصر [[Ruby/Enumerator|الكائن القابل للتعداد]] الذي استدعي معه ثم يعيده. | |||
===<code>[[Ruby/Enumerable/min_by|min_by]]</code>=== | ===<code>[[Ruby/Enumerable/min_by|min_by]]</code>=== | ||
يعيد العنصر الذي تعيد الكتلة المعطاة أًصغر قيمة مقابلة له بعد تمرير عناصر [[Ruby/Enumerator|الكائن القابل للتعداد]] إليها كلٌّ على حدة. | |||
===<code>[[Ruby/Enumerable/minmax|minmax]]</code>=== | ===<code>[[Ruby/Enumerable/minmax|minmax]]</code>=== | ||
يبحث عن قيمة أصغر وأكبر عنصر من عناصر [[Ruby/Enumerator|الكائن القابل للتعداد]] الذي استدعي معه ثم يعيدهما في مصفوفة. | |||
===<code>[[Ruby/Enumerable/minmax_by|minmax_by]]</code>=== | ===<code>[[Ruby/Enumerable/minmax_by|minmax_by]]</code>=== | ||
يعيد العنصرين الذيَن تعيد الكتلة المعطاة أًصغر وأكبر قيمة مقابلة لهما على التوالي بعد تمرير عناصر [[Ruby/Enumerator|الكائن القابل للتعداد]] إليها كلٌّ على حدة. | |||
===<code>[[Ruby/Enumerable/none-3F|none?]]</code>=== | ===<code>[[Ruby/Enumerable/none-3F|none?]]</code>=== | ||
يتحقق من خلو [[Ruby/Enumerable|كائن قابل للتعداد]] من أي عنصر محقِّق للكتلة المعطاة (لا تعيد مع أي عنصر القيمة <code>true</code>) أو مطابق للنمط محدَّد. | يتحقق من خلو [[Ruby/Enumerable|كائن قابل للتعداد]] من أي عنصر محقِّق للكتلة المعطاة (لا تعيد مع أي عنصر القيمة <code>true</code>) أو مطابق للنمط محدَّد. | ||
سطر 101: | سطر 119: | ||
===<code>[[Ruby/Enumerable/partition|partition]]</code>=== | ===<code>[[Ruby/Enumerable/partition|partition]]</code>=== | ||
يعيد [[Ruby/Array|مصفوفتين]] تحتوي الأولى على عناصر [[Ruby/Enumerable|الكائن القابل للتعداد]] المحققة للكتلة المعطاة (التي أعادت عند تمريرها إليها قيمة صحيحة) وتحتوي الأخرى على العناصر المتبقية. | |||
===<code>[[Ruby/Enumerable/reduce|reduce]]</code>=== | ===<code>[[Ruby/Enumerable/reduce|reduce]]</code>=== | ||
يجمع جميع عناصر الكائن القابل للتعداد الذي استدعي معه عبر تطبيق عملية ثنائية تُحدَّد بوساطة كتلة أو <nowiki/>[[Ruby/Symbol|رمز]] يسمي تابعًا أو معاملًا. | |||
===<code>[[Ruby/Enumerable/reject|reject]]</code>=== | ===<code>[[Ruby/Enumerable/reject|reject]]</code>=== | ||
يعيد مصفوفة تحوي جميع عناصر [[Ruby/Enumerable|الكائن القابل للتعداد]] الذي استدعي معه باستثناء تلك التي لم تحقق الكتلة المعطاة (أي التي أعادت معها القيمة <code>false</code> عند تمريرها إليها). | |||
===<code>[[Ruby/Enumerable/reverse_each|reverse_each]]</code>=== | ===<code>[[Ruby/Enumerable/reverse_each|reverse_each]]</code>=== | ||
ينشئ مصفوفة مؤقتة تحوي عناصر الكائن القابل للتعداد ثم يمر عليها (يستعملها) بترتيب معاكس. | |||
===<code>[[Ruby/Enumerable/select|select]]</code>=== | ===<code>[[Ruby/Enumerable/select|select]]</code>=== | ||
يعيد مصفوفة تحتوي على جميع عناصر الكائن القابل للتعداد الذي استدعي معه باستثناء تلك التي تحقق الكتلة المعطاة (أي التي تعيد معها قيمة صحيحة عند تمريرها إليها). | |||
===<code>[[Ruby/Enumerable/slice_after|slice_after]]</code>=== | ===<code>[[Ruby/Enumerable/slice_after|slice_after]]</code>=== | ||
يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد نهايتها عبر نمطٍ محدِّدٍ أو كتلةٍ معطاةٍ ثم يعيد [[Ruby/Enumerator|مُعدِّد]] لكل جزء من الأجزاء الناتجة. | |||
===<code>[[Ruby/Enumerable/slice_before|slice_before]]</code>=== | ===<code>[[Ruby/Enumerable/slice_before|slice_before]]</code>=== | ||
يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد بدايتها عبر نمطٍ محدِّدٍ أو كتلةٍ معطاةٍ ثم يعيد [[Ruby/Enumerator|مُعدِّد]] لكل جزء من الأجزاء الناتجة. | |||
===<code>[[Ruby/Enumerable/slice_when|slice_when]]</code>=== | ===<code>[[Ruby/Enumerable/slice_when|slice_when]]</code>=== | ||
يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد بدايتها عبر كتلةٍ معطاةٍ ثم يعيد [[Ruby/Enumerator|مُعدِّد]] لكل جزء من الأجزاء الناتجة. | |||
===<code>[[Ruby/Enumerable/sort|sort]]</code>=== | ===<code>[[Ruby/Enumerable/sort|sort]]</code>=== | ||
===<code>[[Ruby/Enumerable/sort_by|sort_by]]</code>=== | ===<code>[[Ruby/Enumerable/sort_by|sort_by]]</code>=== | ||
سطر 121: | سطر 155: | ||
[[تصنيف:Ruby]] | [[تصنيف:Ruby]] | ||
[[تصنيف:Ruby Mixin]] | [[تصنيف:Ruby Mixin]] | ||
[[تصنيف:Ruby | [[تصنيف:Ruby Enumerable]] |
مراجعة 18:03، 30 ديسمبر 2018
يوفر المخلوط 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
يقطِّع عناصر الكائن القابل للتعداد إلى أجزاء تحدَّد بدايتها عبر كتلةٍ معطاةٍ ثم يعيد مُعدِّد لكل جزء من الأجزاء الناتجة.