الفرق بين المراجعتين لصفحة: «Ruby/Array/new»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: الدالة <code>Array.new</code> في روبي}}</noinclude> | <noinclude>{{DISPLAYTITLE: الدالة <code>Array.new</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby | [[تصنيف:Ruby Function]] | ||
[[تصنيف: Ruby Array]] | [[تصنيف: Ruby Array]] | ||
تنشئ الدالة <code>new</code> مصفوفةً جديدةً. | تنشئ الدالة <code>new</code> مصفوفةً جديدةً. | ||
سطر 46: | سطر 46: | ||
</syntaxhighlight>لمَّا كانت جميع عناصر المصفوفة تُخزِّن قيمة <code>Hash</code> نفسها، فستؤثر التغييرات التي تطرأ على أيٍّ منها على جميع العناصر الأخرى. | </syntaxhighlight>لمَّا كانت جميع عناصر المصفوفة تُخزِّن قيمة <code>Hash</code> نفسها، فستؤثر التغييرات التي تطرأ على أيٍّ منها على جميع العناصر الأخرى. | ||
إن كنت تريد عدة نسخ، فاستخدم الكتلة | إن كنت تريد عدة نسخ، فاستخدم الكتلة <code>block</code>، إذ يُستخدَم حينئذٍ ناتج تلك الكتلة في كل مرَّة يحتاج فيها أحد عناصر المصفوفة إلى التهيئة:<syntaxhighlight lang="ruby"> | ||
a = Array.new(2) { Hash.new } | a = Array.new(2) { Hash.new } | ||
a[0]['cat'] = 'feline' | a[0]['cat'] = 'feline' | ||
سطر 55: | سطر 55: | ||
==انظر أيضًا== | ==انظر أيضًا== | ||
* الدالة [[Ruby/Array/Array | <code>Array</code>]] | * الدالة<nowiki/>[[Ruby/Array/Array | <code>Array[]</code>]]: تنشئ مصفوفة جديدة. | ||
==مصادر== | ==مصادر== | ||
* [https://ruby-doc.org/core-2.5.1/Array.html#method-c-new قسم الدالة new في الصنف Array في توثيق روبي الرسمي.] | * [https://ruby-doc.org/core-2.5.1/Array.html#method-c-new قسم الدالة new في الصنف Array في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 05:31، 2 أكتوبر 2018
تنشئ الدالة 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)
# => [{}, {}]
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[]
: تنشئ مصفوفة جديدة.