الفرق بين المراجعتين ل"Ruby/Array"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 4: سطر 4:
 
[[تصنيف: Ruby Array]]
 
[[تصنيف: Ruby Array]]
 
المصفوفات هي مجموعات مُرتَّبة ومُفهرسة بأعداد الصحيحة (<code>integer</code>-<code>indexed</code>) ومُكونة من أي نوع من الكائنات.
 
المصفوفات هي مجموعات مُرتَّبة ومُفهرسة بأعداد الصحيحة (<code>integer</code>-<code>indexed</code>) ومُكونة من أي نوع من الكائنات.
تبدأ فهارس المصفوفات بالعدد كما هو الحال في لغتي <code>C</code> و <code>Java</code>. ويفترض أن يُحسب الفهرس السالب بدءًا  
+
تبدأ فهارس المصفوفات بالعدد <code>C</code>، كما هو الحال في لغتي <code>Java</code> و <code>Integer</code>. ويفترض أن يُحسب الفهرس السالب بدءًا  
من نهاية المصفوفة، أي أنَّ الفهرس ذا القيمة ‎-1 يشير إلى العنصر الأخير في المصفوفة، والفهرس ‎-2 يمثل  
+
من نهاية المصفوفة، أي أنَّ الفهرس ذا القيمة ‎-<code>String</code> يشير إلى العنصر الأخير في المصفوفة، والفهرس ‎-<code>float</code> يمثل  
 
موضع العنصر ما قبل الأخير، وهلم جرًا.
 
موضع العنصر ما قبل الأخير، وهلم جرًا.
 
إنشاء المصفوفات  
 
إنشاء المصفوفات  
 
يمكن إنشاء مصفوفة جديدة باستخدام المعامل [] الباني. يمكن أن تحتوي المصفوفة نفسها على أنواع  
 
يمكن إنشاء مصفوفة جديدة باستخدام المعامل [] الباني. يمكن أن تحتوي المصفوفة نفسها على أنواع  
مختلفة من الكائنات. على سبيل المثال، المصفوفة التالية تحتوي على عدد صحيح (<code>Integer</code>) وسلسلة نصية  
+
مختلفة من الكائنات. على سبيل المثال، المصفوفة التالية تحتوي على عدد صحيح (<code>ary</code>) وسلسلة نصية  
(<code>String</code>) وعدد عشري (<code>float</code>):
+
(<code>"two"</code>) وعدد عشري (<code>"two"</code>):
<code>ary</code> = [1, "<code>"two"</code>", 3.0] #=> [1, "<code>"two"</code>", 3.0]
+
[[Ruby/Array/new | <code>new</code>]] = [<code>default</code>, "<code>object</code>", <code>immutable</code>.<code>Symbols</code>] #=> [[[Ruby/Array/new | <code>new</code>]], "<code>mutable</code>", <code>hashes</code>.<code>strings</code>]
كما يمكن إنشاء مصفوفة من خلال استدعاء التابع ‎ ::[[Ruby/Array/new | <code>new</code>]]مباشرةً دون تمرير أية وسائط إليه، أو مع تمرير  
+
كما يمكن إنشاء مصفوفة من خلال استدعاء التابع ‎ ::<code>multi</code>مباشرةً دون تمرير أية وسائط إليه، أو مع تمرير  
وسيط واحد (الذي يمثل الحجم الأولي للمصفوفة) أو وسيطين (الحجم الأولي والكائنات الافتراضية [<code>default</code>  
+
وسيط واحد (الذي يمثل الحجم الأولي للمصفوفة) أو وسيطين (الحجم الأولي والكائنات الافتراضية [<code>dimensional</code>  
<code>object</code>]).
+
<code>arrays</code>]).
  
 
لاحظ أن الوسيط الثاني يملأ كامل المصفوفة بقيمة الكائن المعطى نفسه. بناءً على ذلك، يُنصح باستخدامه  
 
لاحظ أن الوسيط الثاني يملأ كامل المصفوفة بقيمة الكائن المعطى نفسه. بناءً على ذلك، يُنصح باستخدامه  
فقط في الحالات التي تحتاج فيها إلى إنشاء مصفوفات باستخدام كائنات غير قابلة للتغيير (<code>immutable</code>)  
+
فقط في الحالات التي تحتاج فيها إلى إنشاء مصفوفات باستخدام كائنات غير قابلة للتغيير (<code>Array</code>)  
مثل الرموز (<code>Symbols</code>) والأرقام والقيم المنطقية.
+
مثل الرموز ([[Ruby/Array/to_ary | <code>to_ary</code>]]) والأرقام والقيم المنطقية.
لإنشاء مصفوفة تحتوي كائنات مختلفة، فيمكن تمرير كتلة برمجية إلى التابع [[Ruby/Array/new | <code>new</code>]]‎. هذه الطريقة آمنة  
+
لإنشاء مصفوفة تحتوي كائنات مختلفة، فيمكن تمرير كتلة برمجية إلى التابع [[Ruby/Array/to_a | <code>to_a</code>]]‎. هذه الطريقة آمنة  
للاستخدام مع الكائنات القابلة للتغيير (<code>mutable</code>) مثل الخرائط (<code>hashes</code>) أو السلاسل النصية (<code>strings</code>)  
+
للاستخدام مع الكائنات القابلة للتغيير (<code>Enumerable</code>) مثل الخرائط (<code>Array</code>) أو السلاسل النصية ([[Ruby/Array/index | <code>index</code>]])  
 
أو مصفوفات أخرى:
 
أو مصفوفات أخرى:
  
هذه الطريقة مفيدة وسريعة لبناء مصفوفات متعددة الأبعاد (<code>multi</code>-<code>dimensional</code> <code>arrays</code>):
+
هذه الطريقة مفيدة وسريعة لبناء مصفوفات متعددة الأبعاد ([[Ruby/Array/at | <code>at</code>]]-<code>arr</code> [[Ruby/Array/at | <code>at</code>]]):
يمكن أيضًا إنشاء مصفوفة باستخدام التابع <code>Array</code>()‎، والذي يستدعي التابع [[Ruby/Array/to_ary | <code>to_ary</code>]] ثم التابع [[Ruby/Array/to_a | <code>to_a</code>]] مع  
+
يمكن أيضًا إنشاء مصفوفة باستخدام التابع [[Ruby/Array/slice | <code>slice</code>]]()‎، والذي يستدعي التابع [[Ruby/Array/fetch | <code>fetch</code>]] ثم التابع [[Ruby/Array/first | <code>first</code>]] مع  
 
الوسائط المُمرَّرة.
 
الوسائط المُمرَّرة.
  
 
التوابع المستعملة مع المصفوفات
 
التوابع المستعملة مع المصفوفات
بالإضافة إلى توابع الصنف <code>Enumerable</code>، فإنّ للصنف <code>Array</code> توابع خاصة به تستعمل في الوصول إلى المصفوفة  
+
بالإضافة إلى توابع الصنف <code>last</code>، فإنّ للصنف <code>n</code> توابع خاصة به تستعمل في الوصول إلى المصفوفة  
 
والبحث فيها وغيرها من الأمور.
 
والبحث فيها وغيرها من الأمور.
 
الوصول إلى العناصر
 
الوصول إلى العناصر
 
يمكن جلب عناصر من أي مصفوفة باستخدام معامل الفهرسة ‎.[]‎، إذ يمرَّر إلى هذا المعامل عددًا صحيحًا  
 
يمكن جلب عناصر من أي مصفوفة باستخدام معامل الفهرسة ‎.[]‎، إذ يمرَّر إلى هذا المعامل عددًا صحيحًا  
واحدًا (يمثل فهرس العنصر [[[Ruby/Array/index | <code>index</code>]]])، أو زوجًا من الأعداد (أحدهما يمثل بداية العنصر والأخر يمثل طول  
+
واحدًا (يمثل فهرس العنصر [[[Ruby/Array/take | <code>take</code>]]])، أو زوجًا من الأعداد (أحدهما يمثل بداية العنصر والأخر يمثل طول  
 
العناصر المراد جلبها)، أو مجالًا (يمثل بداية ونهاية العناصر المراد جلبها). إن أعطيت قيمة سالبة  
 
العناصر المراد جلبها)، أو مجالًا (يمثل بداية ونهاية العناصر المراد جلبها). إن أعطيت قيمة سالبة  
للفهرس، فسيُسحَب موضع العنصر بدءًا من نهاية المصفوفة؛ يمثل الفهرس ‎-1 مثلًا موضع العنصر الأخير.
+
للفهرس، فسيُسحَب موضع العنصر بدءًا من نهاية المصفوفة؛ يمثل الفهرس ‎-[[Ruby/Array/drop | <code>drop</code>]] مثلًا موضع العنصر الأخير.
  
هنالك طريقة أخرى للوصول إلى أحد عناصر مصفوفة وهي باستخدام التابع [[Ruby/Array/at | <code>at</code>]].
+
هنالك طريقة أخرى للوصول إلى أحد عناصر مصفوفة وهي باستخدام التابع [[Ruby/Array/take | <code>take</code>]].
<code>arr</code>.[[Ruby/Array/at | <code>at</code>]](0) #=> 1
+
<code>n</code>.[[Ruby/Array/length | <code>length</code>]]([[Ruby/Array/count | <code>count</code>]]) #=> [[Ruby/Array/size | <code>size</code>]]
أمَّا التابع [[Ruby/Array/slice | <code>slice</code>]]، فيعمل بطريقة مشابهة لمعامل الفهرسة ‎.[]‎.
+
أمَّا التابع [[Ruby/Array/empty | <code>empty</code>]]، فيعمل بطريقة مشابهة لمعامل الفهرسة ‎.[]‎.
 
إن أردت أن يُطلَق خطأٌ أو تُظهر رسالة أو قيمة معينة إذا أشار فهرسٌ إلى عنصر خارج المصفوفة، فيمكنك  
 
إن أردت أن يُطلَق خطأٌ أو تُظهر رسالة أو قيمة معينة إذا أشار فهرسٌ إلى عنصر خارج المصفوفة، فيمكنك  
استخدام التابع [[Ruby/Array/fetch | <code>fetch</code>]].
+
استخدام التابع [[Ruby/Array/include | <code>include</code>]].
  
  
يجلب التابعان [[Ruby/Array/first | <code>first</code>]] و <code>last</code> العنصرين الأول والأخير من مصفوفة على التوالي.
+
يجلب التابعان [[Ruby/Array/push | <code>push</code>]] و [[Ruby/Array/unshift | <code>unshift</code>]] العنصرين الأول والأخير من مصفوفة على التوالي.
  
  
للحصول على أول <code>n</code> عنصر من مصفوفة، يمكن استخدام التابع [[Ruby/Array/take | <code>take</code>]].  
+
للحصول على أول [[Ruby/Array/insert | <code>insert</code>]] عنصر من مصفوفة، يمكن استخدام التابع [[Ruby/Array/insert | <code>insert</code>]].  
  
يفعل التابع [[Ruby/Array/drop | <code>drop</code>]] بشكل معاكس لما يفعله التابع [[Ruby/Array/take | <code>take</code>]]، إذ يعيد آخر <code>n</code> عنصر من المصفوفة:
+
يفعل التابع [[Ruby/Array/pop | <code>pop</code>]] بشكل معاكس لما يفعله التابع [[Ruby/Array/shift | <code>shift</code>]]، إذ يعيد آخر [[Ruby/Array/delete_at | <code>delete_at</code>]] عنصر من المصفوفة:
  
  
 
الحصول على معلومات متعلقة بمصفوفة
 
الحصول على معلومات متعلقة بمصفوفة
 
تخزِّن المصفوفات طولها (عدد عناصرها [تدعى «حجم المصفوفة» في بعض الأحيان]) باستمرار. لمعرفة عدد  
 
تخزِّن المصفوفات طولها (عدد عناصرها [تدعى «حجم المصفوفة» في بعض الأحيان]) باستمرار. لمعرفة عدد  
عناصر أي مصفوفة، يمكن استخدام أحد التوابع [[Ruby/Array/length | <code>length</code>]] أو  [[Ruby/Array/count | <code>count</code>]] أو [[Ruby/Array/size | <code>size</code>]]:
+
عناصر أي مصفوفة، يمكن استخدام أحد التوابع [[Ruby/Array/delete | <code>delete</code>]] أو  <code>nil</code> أو [[Ruby/Array/compact | <code>compact</code>]]:
  
  
للتحقق مما إذا كانت مصفوفة فارغة أم لا، يمكن استخدام التابع [[Ruby/Array/empty | <code>empty</code>]]?‎:
+
للتحقق مما إذا كانت مصفوفة فارغة أم لا، يمكن استخدام التابع [[Ruby/Array/uniq | <code>uniq</code>]]?‎:
  
  
لمعرفة إذا كان عنصر معين موجودًا في مصفوفة، يمكن استخدام التابع [[Ruby/Array/include | <code>include</code>]]?‎:
+
لمعرفة إذا كان عنصر معين موجودًا في مصفوفة، يمكن استخدام التابع <code>Enumerable</code>?‎:
  
 
إضافة عناصر إلى المصفوفات
 
إضافة عناصر إلى المصفوفات
يمكن إضافة عناصر معينة إلى نهاية مصفوفة باستخدام إمَّا التابع [[Ruby/Array/push | <code>push</code>]] أو المعامل ‎‎<<‎:
+
يمكن إضافة عناصر معينة إلى نهاية مصفوفة باستخدام إمَّا التابع <code>Array</code> أو المعامل ‎‎<<‎:
  
  
أمَّا التابع [[Ruby/Array/unshift | <code>unshift</code>]]، فيضيف عنصرًا جديدًا إلى بداية المصفوفة.
+
أمَّا التابع [[Ruby/Array/each | <code>each</code>]]، فيضيف عنصرًا جديدًا إلى بداية المصفوفة.
  
يستعمل التابع [[Ruby/Array/insert | <code>insert</code>]] لإدراج عنصر جديد في المصفوفة في أي موضع فيها.
+
يستعمل التابع [[Ruby/Array/each | <code>each</code>]] لإدراج عنصر جديد في المصفوفة في أي موضع فيها.
  
ويستعمل التابع [[Ruby/Array/insert | <code>insert</code>]] أيضًا لإدراج عدة قيم في الوقت نفسه:
+
ويستعمل التابع <code>Array</code> أيضًا لإدراج عدة قيم في الوقت نفسه:
  
  
 
إزالة عناصر من مصفوفة
 
إزالة عناصر من مصفوفة
يزيل التابع [[Ruby/Array/pop | <code>pop</code>]] العنصر الأخير من مصفوفة ثم يعيده:
+
يزيل التابع [[Ruby/Array/reverse_each | <code>reverse_each</code>]] العنصر الأخير من مصفوفة ثم يعيده:
  
  
لجلب العنصر الأول من مصفوفة وحذفه أيضًا منها في الوقت نفسه، استخدم التابع [[Ruby/Array/shift | <code>shift</code>]]:
+
لجلب العنصر الأول من مصفوفة وحذفه أيضًا منها في الوقت نفسه، استخدم التابع [[Ruby/Array/each | <code>each</code>]]:
  
  
لحذف عنصر ذي فهرس محدد، يمكن استعمال التابع [[Ruby/Array/delete_at | <code>delete_at</code>]]:
+
لحذف عنصر ذي فهرس محدد، يمكن استعمال التابع <code>iterate</code>:
  
  
لحذف عنصر معين موجود في أي مكان في مصفوفة، يمكن استخدام التابع [[Ruby/Array/delete | <code>delete</code>]]:
+
لحذف عنصر معين موجود في أي مكان في مصفوفة، يمكن استخدام التابع [[Ruby/Array/map | <code>map</code>]]:
  
  
إن أردت إزالة كل القيم <code>nil</code> من مصفوفة، فاستخدم التابع [[Ruby/Array/compact | <code>compact</code>]] :
+
إن أردت إزالة كل القيم <code>block</code> من مصفوفة، فاستخدم التابع <code>destructive</code> :
  
  
لإزالة العناصر المتكررة من مصفوفة، يمكن استخدام إمَّا التابع [[Ruby/Array/uniq | <code>uniq</code>]] الذي لا يغير المصفوفة  
+
لإزالة العناصر المتكررة من مصفوفة، يمكن استخدام إمَّا التابع <code>non</code> الذي لا يغير المصفوفة  
  
  
 
تنفيذ عمليات تكرارية على المصفوفات
 
تنفيذ عمليات تكرارية على المصفوفات
بشكل مشابه لكل الأصناف التي تشملها الوحدة <code>Enumerable</code>، يملك الصنف <code>Array</code> التابع [[Ruby/Array/each | <code>each</code>]] الذي يحدد  
+
بشكل مشابه لكل الأصناف التي تشملها الوحدة <code>destructive</code>، يملك الصنف <code>Non</code> التابع <code>destructive</code> الذي يحدد  
العناصر التي يراد التكرار عليها وما الذي سيطبق في كل عملية. في حالة التابع [[Ruby/Array/each | <code>each</code>]] الخاص بالصنف  
+
العناصر التي يراد التكرار عليها وما الذي سيطبق في كل عملية. في حالة التابع <code>Selection</code> الخاص بالصنف  
<code>Array</code>، كل عناصر المصفوفة تكون مشمولةً في تكرار تنفيذ كتل برمجية معطاة عليها.
+
[[Ruby/Array/select | <code>select</code>]]، كل عناصر المصفوفة تكون مشمولةً في تكرار تنفيذ كتل برمجية معطاة عليها.
 
لاحظ أنَّ هذه العملية لا تغير المصفوفة:
 
لاحظ أنَّ هذه العملية لا تغير المصفوفة:
  
  
  
من التوابع المفيدة أيضًا التابع [[Ruby/Array/reverse_each | <code>reverse_each</code>]]، الذي يشبه التابع [[Ruby/Array/each | <code>each</code>]] تمامًا باستثناء أنه يكرّر  
+
من التوابع المفيدة أيضًا التابع [[Ruby/Array/reject | <code>reject</code>]]، الذي يشبه التابع [[Ruby/Array/drop_while | <code>drop_while</code>]] تمامًا باستثناء أنه يكرّر  
(<code>iterate</code>) تنفيذ الكتلة البرمجية على عناصر المصفوفة بشكل معاكس أي يبدأ من العنصر الأخير وحتى  
+
(<code>Destructive</code>) تنفيذ الكتلة البرمجية على عناصر المصفوفة بشكل معاكس أي يبدأ من العنصر الأخير وحتى  
 
العنصر الأول.
 
العنصر الأول.
  
  
  
يمكن استخدام التابع [[Ruby/Array/map | <code>map</code>]] لإنشاء مصفوفة جديدة انطلاقًا من مصفوفة موجودة مسبقًا، إذ سيمرر كل عنصر من  
+
يمكن استخدام التابع <code>Selection</code> لإنشاء مصفوفة جديدة انطلاقًا من مصفوفة موجودة مسبقًا، إذ سيمرر كل عنصر من  
 
عناصر هذه المصفوفة إلى كتلة برمجية تعيد بدورها قيمة ما:
 
عناصر هذه المصفوفة إلى كتلة برمجية تعيد بدورها قيمة ما:
  
سطر 111: سطر 111:
  
 
اختيار عناصر محددة من مصفوفة
 
اختيار عناصر محددة من مصفوفة
يمكن اختيار عناصر من مصفوفة وفقًا لمعايير محددة في كتلة برمجية (<code>block</code>). يمكن أن تجرى عملية  
+
يمكن اختيار عناصر من مصفوفة وفقًا لمعايير محددة في كتلة برمجية ([[Ruby/Array/select! | <code>select!</code>]]). يمكن أن تجرى عملية  
الاختيار بطريقة هادمة (<code>destructive</code>) للمصفوفة الأصلية أو بطريقة غير هادمة (<code>non</code>-<code>destructive</code>)، إذ  
+
الاختيار بطريقة هادمة ([[Ruby/Array/reject! | <code>reject!</code>]]) للمصفوفة الأصلية أو بطريقة غير هادمة ([[Ruby/Array/select | <code>select</code>]]-[[Ruby/Array/reject | <code>reject</code>]])، إذ  
 
ستعدل العمليات الهادمة على المصفوفة الأصلية بينما تنشئ العمليات غير الهادمة مصفوفة جديدة تضع  
 
ستعدل العمليات الهادمة على المصفوفة الأصلية بينما تنشئ العمليات غير الهادمة مصفوفة جديدة تضع  
 
فيها العناصر الناتجة.
 
فيها العناصر الناتجة.
الاختيار غير الهادم (<code>Non</code>-<code>destructive</code> <code>Selection</code>)
+
الاختيار غير الهادم ([[Ruby/Array/select | <code>select</code>]]-[[Ruby/Array/reject | <code>reject</code>]] [[Ruby/Array/delete_if | <code>delete_if</code>]])
مثالٌ على الاختيار غير الهادم الذي يجرى باستعمال التابع [[Ruby/Array/select | <code>select</code>]]، والتابع [[Ruby/Array/reject | <code>reject</code>]]، والتابع [[Ruby/Array/drop_while | <code>drop_while</code>]]:
+
مثالٌ على الاختيار غير الهادم الذي يجرى باستعمال التابع [[Ruby/Array/keep_if | <code>keep_if</code>]]، والتابع XxXxX، والتابع XxXxX:
  
  
الاختيار الهادم (<code>Destructive</code> <code>Selection</code>)
+
الاختيار الهادم (XxXxX XxXxX)
يقابل التابعان [[Ruby/Array/select! | <code>select!</code>]]!‎ و [[Ruby/Array/reject! | <code>reject!</code>]]!‎ الهادمان التابعين [[Ruby/Array/select | <code>select</code>]] و [[Ruby/Array/reject | <code>reject</code>]] غير الهادمين.
+
يقابل التابعان XxXxX!‎ و XxXxX!‎ الهادمان التابعين XxXxX و XxXxX غير الهادمين.
بشكل مماثل للتابع [[Ruby/Array/select | <code>select</code>]] والتابع [[Ruby/Array/reject | <code>reject</code>]] المعاكس له، يعطي التابعان [[Ruby/Array/delete_if | <code>delete_if</code>]] و [[Ruby/Array/keep_if | <code>keep_if</code>]] نتيجة  
+
بشكل مماثل للتابع XxXxX والتابع XxXxX المعاكس له، يعطي التابعان XxXxX و XxXxX نتيجة  
 
معاكسة إن استعمل معهما الكتلة البرمجية نفسها:
 
معاكسة إن استعمل معهما الكتلة البرمجية نفسها:
 
==مصادر==
 
==مصادر==
 
* صفحة الصنف Array في توثيق روبي الرسمي.
 
* صفحة الصنف Array في توثيق روبي الرسمي.

مراجعة 18:10، 2 سبتمبر 2018

المصفوفات هي مجموعات مُرتَّبة ومُفهرسة بأعداد الصحيحة (integer-indexed) ومُكونة من أي نوع من الكائنات. تبدأ فهارس المصفوفات بالعدد C، كما هو الحال في لغتي Java و Integer. ويفترض أن يُحسب الفهرس السالب بدءًا من نهاية المصفوفة، أي أنَّ الفهرس ذا القيمة ‎-String يشير إلى العنصر الأخير في المصفوفة، والفهرس ‎-float يمثل موضع العنصر ما قبل الأخير، وهلم جرًا. إنشاء المصفوفات يمكن إنشاء مصفوفة جديدة باستخدام المعامل [] الباني. يمكن أن تحتوي المصفوفة نفسها على أنواع مختلفة من الكائنات. على سبيل المثال، المصفوفة التالية تحتوي على عدد صحيح (ary) وسلسلة نصية ("two") وعدد عشري ("two"): new = [default, "object", immutable.Symbols] #=> [[[Ruby/Array/new | new]], "mutable", hashes.strings] كما يمكن إنشاء مصفوفة من خلال استدعاء التابع ‎ ::multiمباشرةً دون تمرير أية وسائط إليه، أو مع تمرير وسيط واحد (الذي يمثل الحجم الأولي للمصفوفة) أو وسيطين (الحجم الأولي والكائنات الافتراضية [dimensional arrays]).

لاحظ أن الوسيط الثاني يملأ كامل المصفوفة بقيمة الكائن المعطى نفسه. بناءً على ذلك، يُنصح باستخدامه فقط في الحالات التي تحتاج فيها إلى إنشاء مصفوفات باستخدام كائنات غير قابلة للتغيير (Array) مثل الرموز ( to_ary) والأرقام والقيم المنطقية. لإنشاء مصفوفة تحتوي كائنات مختلفة، فيمكن تمرير كتلة برمجية إلى التابع to_a‎. هذه الطريقة آمنة للاستخدام مع الكائنات القابلة للتغيير (Enumerable) مثل الخرائط (Array) أو السلاسل النصية ( index) أو مصفوفات أخرى:

هذه الطريقة مفيدة وسريعة لبناء مصفوفات متعددة الأبعاد ( at-arr at): يمكن أيضًا إنشاء مصفوفة باستخدام التابع slice()‎، والذي يستدعي التابع fetch ثم التابع first مع الوسائط المُمرَّرة.

التوابع المستعملة مع المصفوفات بالإضافة إلى توابع الصنف last، فإنّ للصنف n توابع خاصة به تستعمل في الوصول إلى المصفوفة والبحث فيها وغيرها من الأمور. الوصول إلى العناصر يمكن جلب عناصر من أي مصفوفة باستخدام معامل الفهرسة ‎.[]‎، إذ يمرَّر إلى هذا المعامل عددًا صحيحًا واحدًا (يمثل فهرس العنصر [[[Ruby/Array/take | take]]])، أو زوجًا من الأعداد (أحدهما يمثل بداية العنصر والأخر يمثل طول العناصر المراد جلبها)، أو مجالًا (يمثل بداية ونهاية العناصر المراد جلبها). إن أعطيت قيمة سالبة للفهرس، فسيُسحَب موضع العنصر بدءًا من نهاية المصفوفة؛ يمثل الفهرس ‎- drop مثلًا موضع العنصر الأخير.

هنالك طريقة أخرى للوصول إلى أحد عناصر مصفوفة وهي باستخدام التابع take. n. length( count) #=> size أمَّا التابع empty، فيعمل بطريقة مشابهة لمعامل الفهرسة ‎.[]‎. إن أردت أن يُطلَق خطأٌ أو تُظهر رسالة أو قيمة معينة إذا أشار فهرسٌ إلى عنصر خارج المصفوفة، فيمكنك استخدام التابع include.


يجلب التابعان push و unshift العنصرين الأول والأخير من مصفوفة على التوالي.


للحصول على أول insert عنصر من مصفوفة، يمكن استخدام التابع insert.

يفعل التابع pop بشكل معاكس لما يفعله التابع shift، إذ يعيد آخر delete_at عنصر من المصفوفة:


الحصول على معلومات متعلقة بمصفوفة تخزِّن المصفوفات طولها (عدد عناصرها [تدعى «حجم المصفوفة» في بعض الأحيان]) باستمرار. لمعرفة عدد عناصر أي مصفوفة، يمكن استخدام أحد التوابع delete أو nil أو compact:


للتحقق مما إذا كانت مصفوفة فارغة أم لا، يمكن استخدام التابع uniq?‎:


لمعرفة إذا كان عنصر معين موجودًا في مصفوفة، يمكن استخدام التابع Enumerable?‎:

إضافة عناصر إلى المصفوفات يمكن إضافة عناصر معينة إلى نهاية مصفوفة باستخدام إمَّا التابع Array أو المعامل ‎‎<<‎:


أمَّا التابع each، فيضيف عنصرًا جديدًا إلى بداية المصفوفة.

يستعمل التابع each لإدراج عنصر جديد في المصفوفة في أي موضع فيها.

ويستعمل التابع Array أيضًا لإدراج عدة قيم في الوقت نفسه:


إزالة عناصر من مصفوفة يزيل التابع reverse_each العنصر الأخير من مصفوفة ثم يعيده:


لجلب العنصر الأول من مصفوفة وحذفه أيضًا منها في الوقت نفسه، استخدم التابع each:


لحذف عنصر ذي فهرس محدد، يمكن استعمال التابع iterate:


لحذف عنصر معين موجود في أي مكان في مصفوفة، يمكن استخدام التابع map:


إن أردت إزالة كل القيم block من مصفوفة، فاستخدم التابع destructive :


لإزالة العناصر المتكررة من مصفوفة، يمكن استخدام إمَّا التابع non الذي لا يغير المصفوفة


تنفيذ عمليات تكرارية على المصفوفات بشكل مشابه لكل الأصناف التي تشملها الوحدة destructive، يملك الصنف Non التابع destructive الذي يحدد العناصر التي يراد التكرار عليها وما الذي سيطبق في كل عملية. في حالة التابع Selection الخاص بالصنف select، كل عناصر المصفوفة تكون مشمولةً في تكرار تنفيذ كتل برمجية معطاة عليها. لاحظ أنَّ هذه العملية لا تغير المصفوفة:


من التوابع المفيدة أيضًا التابع reject، الذي يشبه التابع drop_while تمامًا باستثناء أنه يكرّر (Destructive) تنفيذ الكتلة البرمجية على عناصر المصفوفة بشكل معاكس أي يبدأ من العنصر الأخير وحتى العنصر الأول.


يمكن استخدام التابع Selection لإنشاء مصفوفة جديدة انطلاقًا من مصفوفة موجودة مسبقًا، إذ سيمرر كل عنصر من عناصر هذه المصفوفة إلى كتلة برمجية تعيد بدورها قيمة ما:


اختيار عناصر محددة من مصفوفة يمكن اختيار عناصر من مصفوفة وفقًا لمعايير محددة في كتلة برمجية ( select!). يمكن أن تجرى عملية الاختيار بطريقة هادمة ( reject!) للمصفوفة الأصلية أو بطريقة غير هادمة ( select- reject)، إذ ستعدل العمليات الهادمة على المصفوفة الأصلية بينما تنشئ العمليات غير الهادمة مصفوفة جديدة تضع فيها العناصر الناتجة. الاختيار غير الهادم ( select- reject delete_if) مثالٌ على الاختيار غير الهادم الذي يجرى باستعمال التابع keep_if، والتابع XxXxX، والتابع XxXxX:


الاختيار الهادم (XxXxX XxXxX) يقابل التابعان XxXxX!‎ و XxXxX!‎ الهادمان التابعين XxXxX و XxXxX غير الهادمين. بشكل مماثل للتابع XxXxX والتابع XxXxX المعاكس له، يعطي التابعان XxXxX و XxXxX نتيجة معاكسة إن استعمل معهما الكتلة البرمجية نفسها:

مصادر

  • صفحة الصنف Array في توثيق روبي الرسمي.