التابع Array.flatten في روبي

من موسوعة حسوب
< Ruby‏ | Array

يجعل التابع flatten المصفوفة التي تحوي عناصر متشعبة ضمنها مصفوفةً أحادية البعد بشكل تعاودي (recursively)؛ أي أنَّ كل عنصر من عناصر المصفوفة المعطاة والذي قد يكون نفسه مصفوفةً متشعبةً من مستوًى واحدٍ أو أكثر ستُستخلَص عناصره وتضاف إلى مصفوفة جديدة.

يقبل هذا التابع تمرير المعامل level الاختياري الذي يحدد مستوى التعاودية (recursion level).

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

 flatten  new_ary
flatten(level)  new_ary

المعاملات

level

عدد صحيح يحدد مستوى التشعُّب التي يراد استخلاص العناصر الواقعة فيه وجعلها أحادية.

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

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

أمثلة

أمثلة على استخدام التابع flatten:

 s = [ 1, 2, 3 ]           #=> [1, 2, 3]
t = [ 4, 5, 6, [7, 8] ]   #=> [4, 5, 6, [7, 8]]
a = [ s, t, 9, 10 ]       #=> [[1, 2, 3], [4, 5, 6, [7, 8]], 9, 10]
a.flatten                 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [ 1, 2, [3, [4, 5] ] ]
a.flatten(1)              #=> [1, 2, 3, [4, 5]]

انظر أيضًا

  • التابع flatten!‎: يشبه‎ التابع flatten في جميع النواحي باستثناء أنه لا يضع الناتج في مصفوفة جديدة وإنما يعدل على المصفوفة الأصلية نفسها.
  • التابع dig: يستخرج العنصر المتشعِّب (nested value) المحدَّد بسلسلة الوسائط idx الممرَّرة إليه وذلك عبر استدعاء dig عند كل مستوى تشعب.

مصادر