الدالة Array.new‎ في روبي

من موسوعة حسوب
< Ruby‏ | Array
مراجعة 10:13، 3 سبتمبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>Array.new‎</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby Arra...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تنشئ الدالة new‎ مصفوفةً جديدةً.

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

 new(size=0, default=nil)
new(array)
new(size) {|index| block }
إن لم تمرَّر أيَّة وسائط إلى الدالة new()‎، فستنشئ مصفوفة جديدة فارغة. إن مُرِّر الوسيطان size و default الذان يمثلان حجم المصفوفة والقيم الأولية لعناصرها، فستُنشَأ مصفوفة جديدة حجمها size ومكونة من القيم default المعطاة. لاحظ أنَّ جميع العناصر تشير إلى الكائن default نفسه.
first_array = ["Matz", "Guido"]
تنشئ الدالة new() أيضًا نسخة من مصفوفة أخرى عبر تمريرها كوسيط (تنشئ تلك المصفوفة عبر استدعاء التابع to_ary مع الوسيط المعطى).
second_array = Array.new(first_array) #=> ["Matz", "Guido"]
يمكن إنشاء مصفوفة بحجم size مع حساب قيمة كل عنصر عناصرها وذلك عبر تمرير فهرس العنصر إلى كتلة برمجية محددة.
Array.new(3){ |index| index ** 2 } # => [0, 1, 4]

المعاملات

size عدد صحيح يمثل حجم المصفوفة التي يراد إنشاؤها. default القيم الأولية لعناصر المصفوفة التي يراد إنشاؤها. array مصفوفة موجودة مسبقًا يراد إنشاء نسخةً أخرى منها.

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

تعاد المصفوفة التي أنشئت. أخطاء شائعة عند تمرير الوسيط الثاني، سيُستخدم الكائن نفسه كقيمة لجميع عناصر المصفوفة: a = Array.new(2, Hash.new)

  1. => [{}, {}]

a[0]['cat'] = 'feline' a # => [{""cat""=>""feline""}, {""cat""=>""feline""}]

a[1]['cat'] = 'Felix' a # => [{""cat""=>""Felix""}, {""cat""=>""Felix""}]


لمَّا كانت جميع عناصر المصفوفة تُخزِّن قيمة Hash نفسها، فستؤثر التغييرات التي تطرأ على أيٍّ منها على جميع العناصر الأخرى. إن كنت تريد عدة نسخ، فاستخدم الكتلة block، إذ يُستخدَم حينئذٍ ناتج تلك الكتلة في كل مرَّة يحتاج فيها أحد عناصر المصفوفة إلى التهيئة: a = Array.new(2) { Hash.new } a[0]['cat'] = 'feline' a # => [{""cat""=>""feline""}, {}] [ 1, 'a', /^A/ ] # => [1, ""a"", /^A/]

انظر أيضًا

  • الدالة Array[]‎: تنشئ مصفوفة جديدة.

مصادر

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