الفرق بين المراجعتين لصفحة: «Ruby/Array/new»

من موسوعة حسوب
< Ruby‏ | Array
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: الدالة <code>Array.new‎</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby Arra...'
 
طلا ملخص تعديل
 
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الدالة <code>Array.new‎</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: الدالة <code>Array.new‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف:Ruby Function]]
[[تصنيف: Ruby Array]]
[[تصنيف: Ruby Array]]
تنشئ الدالة <code>ne</code>‎<code>w</code>‎ مصفوفةً جديدةً.
تنشئ الدالة <code>new</code>‎‎ مصفوفةً جديدةً.
==البنية العامة==
 
<syntaxhighlight lang="ruby"> new(size=0, default=nil)
== البنية العامة ==
<syntaxhighlight lang="ruby">
new(size=0, default=nil)
new(array)
new(array)
new(size) {|index| block }
new(size) {|index| block }
إن لم تمرَّر أيَّة وسائط إلى الدالة ne‎w()‎، فستنشئ مصفوفة جديدة فارغة. إن مُرِّر الوسيطان size و default الذان يمثلان حجم المصفوفة والقيم الأولية لعناصرها، فستُنشَأ مصفوفة جديدة حجمها size ومكونة من القيم default المعطاة. لاحظ أنَّ جميع العناصر تشير إلى الكائن default نفسه.
 
</syntaxhighlight>إن لم تمرَّر أيَّة وسائط إلى الدالة <code>new()‎</code>، فستنشئ مصفوفة جديدة فارغة. إن مُرِّر الوسيطان <code>size</code> و <code>default</code> اللذان يمثلان حجم المصفوفة والقيم الأولية لعناصرها، فستُنشَأ مصفوفة جديدة حجمها <code>size</code> ومكونة من القيم <code>default</code> المعطاة. لاحظ أنَّ جميع العناصر تشير إلى الكائن <code>default</code> نفسه.<syntaxhighlight lang="ruby">
first_array = ["Matz", "Guido"]
first_array = ["Matz", "Guido"]
تنشئ الدالة ne‎w()‎ أيضًا نسخة من مصفوفة أخرى عبر تمريرها كوسيط (تنشئ تلك المصفوفة عبر استدعاء التابع ‎to_ary‎ مع الوسيط المعطى).
 
</syntaxhighlight>تنشئ الدالة <code>new()</code>‎ أيضًا نسخة من مصفوفة أخرى عبر تمريرها كوسيط (تنشئ تلك المصفوفة عبر استدعاء التابع ‎[[Ruby/Array/to_ary | <code>to_ary</code>]]‎ مع الوسيط المعطى).<syntaxhighlight lang="ruby">
second_array = Array.new(first_array) #=> ["Matz", "Guido"]
second_array = Array.new(first_array) #=> ["Matz", "Guido"]
يمكن إنشاء مصفوفة بحجم size مع حساب قيمة كل عنصر عناصرها وذلك عبر تمرير فهرس العنصر إلى كتلة برمجية محددة.
 
</syntaxhighlight>يمكن إنشاء مصفوفة بحجم <code>size</code> مع حساب قيمة كل عنصر من عناصرها وذلك عبر تمرير فهرس العنصر إلى كتلة برمجية محددة.<syntaxhighlight lang="ruby">
Array.new(3){ |index| index ** 2 } # => [0, 1, 4]
Array.new(3){ |index| index ** 2 } # => [0, 1, 4]
</syntaxhighlight>
 
</syntaxhighlight>
 
==المعاملات==
==المعاملات==
[[Ruby/Array/size | <code>size</code>]]
 
=== <code>size</code> ===
عدد صحيح يمثل حجم المصفوفة التي يراد إنشاؤها.
عدد صحيح يمثل حجم المصفوفة التي يراد إنشاؤها.
<code>default</code>
 
=== <code>default</code> ===
القيم الأولية لعناصر المصفوفة التي يراد إنشاؤها.
القيم الأولية لعناصر المصفوفة التي يراد إنشاؤها.
<code>array</code>
 
=== <code>array</code> ===
مصفوفة موجودة مسبقًا يراد إنشاء نسخةً أخرى منها.
مصفوفة موجودة مسبقًا يراد إنشاء نسخةً أخرى منها.
==القيم المعادة==
==القيم المعادة==
تعاد المصفوفة التي أنشئت.
تعاد المصفوفة التي أنشئت.
أخطاء شائعة
 
عند تمرير الوسيط الثاني، سيُستخدم الكائن نفسه كقيمة لجميع عناصر المصفوفة:
== أخطاء شائعة ==
<code>a</code> = [[Ruby/Array/Array | <code>Array</code>]].<code>new</code>(2, <code>Hash</code>.<code>new</code>)
عند تمرير الوسيط الثاني، سيُستخدم الكائن نفسه كقيمة لجميع عناصر المصفوفة:<syntaxhighlight lang="ruby">
a = Array.new(2, Hash.new)
# => [{}, {}]
# => [{}, {}]


<code>a</code>[0]['<code>cat</code>'] = '<code>feline</code>'
a[0]['cat'] = 'feline'
<code>a</code> # => [{"<code>"cat"</code>"=>"<code>"feline"</code>"}, {"<code>"cat"</code>"=>"<code>"feline"</code>"}]
a # => [{"cat"=>"feline"}, {"cat"=>"feline"}]
a[1]['cat'] = 'Felix'
a # => [{"cat"=>"Felix"}, {"cat"=>"Felix"}]
</syntaxhighlight>لمَّا كانت جميع عناصر المصفوفة تُخزِّن قيمة <code>Hash</code> نفسها، فستؤثر التغييرات التي تطرأ على أيٍّ منها على جميع العناصر الأخرى.


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


</syntaxhighlight>


لمَّا كانت جميع عناصر المصفوفة تُخزِّن قيمة <code>Hash</code> نفسها، فستؤثر التغييرات التي تطرأ على أيٍّ منها على جميع العناصر الأخرى.
إن كنت تريد عدة نسخ، فاستخدم الكتلة <code>block</code>، إذ يُستخدَم حينئذٍ ناتج تلك الكتلة في كل مرَّة يحتاج فيها أحد عناصر المصفوفة إلى التهيئة:
<code>a</code> = [[Ruby/Array/Array | <code>Array</code>]].<code>new</code>(2) { <code>Hash</code>.<code>new</code> }
<code>a</code>[0]['<code>cat</code>'] = '<code>feline</code>'
<code>a</code> # => [{"<code>"cat"</code>"=>"<code>"feline"</code>"}, {}]
[ 1, '<code>a</code>', /^<code>A</code>/ ]        # => [1, "<code>"a"</code>", /^<code>A</code>/]
==انظر أيضًا==
==انظر أيضًا==
* الدالة [[Ruby/Array/Array | <code>Array</code>]][]‎: تنشئ مصفوفة جديدة.
* الدالة<nowiki/>[[Ruby/Array/Array | <code>Array[]‎</code>]]: تنشئ مصفوفة جديدة.
==مصادر==
==مصادر==
* قسم الدالة 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[]‎: تنشئ مصفوفة جديدة.

مصادر