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

من موسوعة حسوب
< Ruby‏ | Numeric
لا ملخص تعديل
ط مراجعة وتدقيق.
 
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: التابع <code>step‎</code> الخاص بالصنف <code>Numeric</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE: التابع <code>Numeric.step‎</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Numeric]]
[[تصنيف: Ruby Numeric]]
يستدعي التابع <code>step</code> الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه (<code>num</code>)، ويصعد بالخطوة <code>step</code> (قيمتها الافتراضية <code>1</code>) في كل استدعاء.
يستدعي التابع <code>step</code> الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه وحتى قيمة محدَّدة مع الزيادة أو الطرح بقدار خطوة ثابتة معطاة.
 
تنتهي الحلقة التكرارية عندما تكون القيمة المراد تمريرها إلى الكتلة أكبر من الوسيط <code>limit</code> (إن كان <code>step</code> موجبًا)ـ أو أصغر من <code>limit</code> (إن كان <code>step</code> سالباً)، قيمة <code>limit</code> الافتراضية هي اللانهاية.
 
عند استخدام صياغة الوسائط المسماة (keyword argument)، يمكن حذف الوسيطين <code>step</code> و <code>limit</code>. أما عند استخدام صياغة الوسيط الثابت (fixed position argument)، فلا يُسمح بإعطاء الوسيط <code>step</code> القيمة صفر  (مثل <code>num.step(limit, 0)‎</code>) لأسباب تتعلق بالتوافق مع الإصدارات القديمة.
 
إن كانت جميع الوسائط أعدادًا صحيحة، فإن الحلقة ستعمل باستخدام عداد صحيح (integer counter.). وإن كان أي من الوسائط عددًا عشريًا (float)، فستُحوّل كلها إلى أعداد عشرية، وستُنفّذ الحلقة التكرارية <code>floor(n + n*Float::EPSILON) + 1</code> مرة، حيث <code>n = (limit - num)/ step</code>. خلا ذلك، ستبدأ الحلقة التكرارية من العدد <code>num</code>، وستستخدم إما معامل المقارنة (<code><</code>) أو (<code>></code>)، لمقارنة العداد مع قيمة <code>limit</code>، ثم تضيف <code>1</code> إلى العداد باستخدام المعامل <code>+</code>.
 
في حال لم تُعطى أي كتلة، فسيُعاد كائن من الصنف <code>[[Ruby/Enumerator|enumerator]]</code> بدلاً من ذلك
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby">step(by: step, to: limit) {|i| block }→  self
<syntaxhighlight lang="ruby">step(by: step, to: limit) {|i| block }→  self
step(by: step, to: limit) →  an_enumerator
step(by: step, to: limit) →  an_enumerator
step(limit=nil, step=1) {|i| block }  →  self
step(limit=nil, step=1) {|i| block }  →  self
step(limit=nil, step=1)→  an_enumerator‎</syntaxhighlight>
step(limit=nil, step=1)→  an_enumerator‎</syntaxhighlight>تنتهي الحلقة التكرارية عندما تكون القيمة المراد تمريرها إلى الكتلة أكبر من قيمة المعامل <code>limit</code> إن كان <code>step</code> موجبًا، أو أصغر من القيمة <code>limit</code> إن كان <code>step</code> سالبًا.
 
عند استخدام صياغة [[Ruby/calling methods#.D8.A7.D9.84.D9.88.D8.B3.D8.A7.D8.A6.D8.B7 .D8.A7.D9.84.D9.85.D8.B3.D9.85.D8.A7.D8.A9|الوسائط المسماة]] (keyword argument) المفضلة، يمكن حذف الوسيطين <code>step</code> و <code>limit</code>. أما عند استخدام صياغة [[Ruby/calling methods#.D8.A7.D9.84.D9.88.D8.B3.D8.A7.D8.A6.D8.B7 .D8.A7.D9.84.D9.85.D9.88.D8.B6.D8.B9.D9.8A.D9.91.D8.A9|الوسائط الموضعية الثابتة]] (fixed position argument)، فلا يُسمح بإعطاء الوسيط <code>step</code> القيمة صفر  (مثل <code>num.step(limit, 0)‎</code>) لأسباب تتعلق بالتوافق مع الإصدارات القديمة.
 
إن كانت جميع الوسائط أعدادًا صحيحةً، فإن الحلقة ستعمل باستخدام عداد صحيح (integer counter). وإن كان أيٌّ من الوسائط [[Ruby/Float|عددًا عشريًا]]، فستُحوّل كلها إلى [[Ruby/Float|أعداد عشرية]]، وستُنفّذ الحلقة التكرارية <code>floor(n + n*Float::EPSILON) + 1</code> مرة، إذ <code>n = (limit - num)/ step</code>. خلا ذلك، ستبدأ الحلقة التكرارية من العدد <code>num</code>، وستستخدم إما معامل الموازنة <code><</code> أو <code>></code>، لموازنة العداد مع القيمة <code>limit</code>، ثم تضيف <code>1</code> إلى العداد باستخدام المعامل <code>+</code>.
 
في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف <code>[[Ruby/Enumerator|enumerator]]</code>.
==المعاملات==
==المعاملات==
===<code>step‎</code>===
===<code>step‎</code>===
عدد يمثل خطوة التكرار.
عدد يمثل الخطوة. القيمة الافتراضية هي: 1.


===<code>limit‎</code>===
===<code>limit‎</code>===
عدد يمثل حد الحلقة التكرارية.
عدد يمثل حد الحلقة التكرارية. القيمة الافتراضية هي: <code>nil</code> (أي اللانهاية [infinity]).


==القيمة المُعادة==
==القيمة المعادة==
يعيد  التابع <code>step</code> الكائن الذي استُدعي معه، وفي حال لم تُعطى أي كتلة، فسيُعاد كائن من الصنف <code>[[Ruby/Enumerator|enumerator]].</code>
يعاد الكائن الذي استُدعي معه، أو الكائن <code>[[Ruby/Enumerator|enumerator]]</code> في حال لم تُعطَ أية كتلة.


==أمثلة==
==أمثلة==
سطر 33: سطر 31:
3.step(to: 5) {|i| print i, " " }
3.step(to: 5) {|i| print i, " " }
1.step(10, 2) {|i| print i, " " }
1.step(10, 2) {|i| print i, " " }
Math::E.step(to: Math::PI, by: 0.2) {|f| print f, " " }‎</syntaxhighlight>الناتج:<syntaxhighlight lang="ruby">[1, 2, 3, 4]
Math::E.step(to: Math::PI, by: 0.2) {|f| print f, " " }‎</syntaxhighlight>ناتج تنفيذ هذا المثال هو:<syntaxhighlight lang="text">[1, 2, 3, 4]
[10, 9, 8, 7]
[10, 9, 8, 7]
3 4 5
3 4 5
سطر 41: سطر 39:


==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Numeric/to_c|to_c]]</code>: يعيد  القيمة كعدد عقدي.
* التابع <code>[[Ruby/Numeric/to_c|to_c]]</code>: يحول العدد الذي استدعي معه إلى عدد عقدي.


==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Numeric.html#method-i-step قسم التابع step‎ في الصنف Numeric‎ في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/Numeric.html#method-i-step قسم التابع step‎ في الصنف Numeric‎ في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 20:08، 20 نوفمبر 2018

يستدعي التابع step الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه وحتى قيمة محدَّدة مع الزيادة أو الطرح بقدار خطوة ثابتة معطاة.

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

step(by: step, to: limit) {|i| block }  self
step(by: step, to: limit)   an_enumerator
step(limit=nil, step=1) {|i| block }    self
step(limit=nil, step=1)  an_enumerator

تنتهي الحلقة التكرارية عندما تكون القيمة المراد تمريرها إلى الكتلة أكبر من قيمة المعامل limit إن كان step موجبًا، أو أصغر من القيمة limit إن كان step سالبًا.

عند استخدام صياغة الوسائط المسماة (keyword argument) المفضلة، يمكن حذف الوسيطين step و limit. أما عند استخدام صياغة الوسائط الموضعية الثابتة (fixed position argument)، فلا يُسمح بإعطاء الوسيط step القيمة صفر (مثل num.step(limit, 0)‎) لأسباب تتعلق بالتوافق مع الإصدارات القديمة.

إن كانت جميع الوسائط أعدادًا صحيحةً، فإن الحلقة ستعمل باستخدام عداد صحيح (integer counter). وإن كان أيٌّ من الوسائط عددًا عشريًا، فستُحوّل كلها إلى أعداد عشرية، وستُنفّذ الحلقة التكرارية floor(n + n*Float::EPSILON) + 1 مرة، إذ n = (limit - num)/ step. خلا ذلك، ستبدأ الحلقة التكرارية من العدد num، وستستخدم إما معامل الموازنة < أو >، لموازنة العداد مع القيمة limit، ثم تضيف 1 إلى العداد باستخدام المعامل +.

في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف enumerator.

المعاملات

step‎

عدد يمثل الخطوة. القيمة الافتراضية هي: 1.

limit‎

عدد يمثل حد الحلقة التكرارية. القيمة الافتراضية هي: nil (أي اللانهاية [infinity]).

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

يعاد الكائن الذي استُدعي معه، أو الكائن enumerator في حال لم تُعطَ أية كتلة.

أمثلة

مثال على استخدام التابع step‎:

p 1.step.take(4)
p 10.step(by: -1).take(4)
3.step(to: 5) {|i| print i, " " }
1.step(10, 2) {|i| print i, " " }
Math::E.step(to: Math::PI, by: 0.2) {|f| print f, " " }

ناتج تنفيذ هذا المثال هو:

[1, 2, 3, 4]
[10, 9, 8, 7]
3 4 5
1 3 5 7 9
2.718281828459045 2.9182818284590453 3.118281828459045

انظر أيضا

  • التابع to_c: يحول العدد الذي استدعي معه إلى عدد عقدي.

مصادر