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

من موسوعة حسوب
< Ruby‏ | Numeric
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>step‎</code> الخاص بالصنف <code>Numeric</code> في روبي}}</noinclude> تصنيف: Ruby تصني...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 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> (قيمتها الافتراضية هي اللانهاية). أما عند استخدام صياغة الوسيط الثابت، لا يُسمح بإعطاء الوسيط step القيمة صفر(مثل <code>num.step(limit, 0)</code>) لأسباب التوافق التاريخية.
إن كانت جميع الوسائط أعدادًا صحيحة، فإن الحلقة ستعمل باستخدام عداد صحيح (integer counter.).
إن كان أي من الوسائط عددًا عشريًا (float)، فستُحوّل كلها إلى أعداد عشرية، وستُنفّذ الحلقة التكرارية floor(n + n*Float::EPSILON) + 1 مرة، حيث n = (limit - num) / step.
خلا ذلك، ستبدأ الحلقة التكرارية من <code>num</code> ، وستستخدم إما معامل المقارنة (<code><</code>) أو (<code>></code>) لمقارنة العداد مع <code>limit</code>، ثم تضيف 1 إلى العداد باستخدام المعامل <code>+</code>.
في حال لم تُعطى أي كتلة، فسيُعاد كائن من الصنف enumerator بدلاً من ذلك.
مثلا:
 
سوف ينتج:
<code>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> سالبًا.
==المعاملات==
===<code>by: step‎</code>===


===<code>to: 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.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>) لأسباب تتعلق بالتوافق مع الإصدارات القديمة.


===<code>limit‎</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>nil</code> (أي اللانهاية [infinity]).


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


==أمثلة==
==أمثلة==
سطر 37: سطر 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>
Math::E.step(to: Math::PI, by: 0.2) {|f| print f, " " }‎</syntaxhighlight>ناتج تنفيذ هذا المثال هو:<syntaxhighlight lang="text">[1, 2, 3, 4]
[10, 9, 8, 7]
3 4 5
1 3 5 7 9
2.718281828459045 2.9182818284590453 3.118281828459045
</syntaxhighlight>
 
==انظر أيضا==
==انظر أيضا==
* التابع <code>[[Ruby/Numeric/round|round]]</code>: يعيد  العدد <code>num</code> مُقرّبًا إلى أقرب قيمة مع دقة <code>ndigits</code> منزلًا عشريًا (القيمة الافتراضية هي 0).
* التابع <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: يحول العدد الذي استدعي معه إلى عدد عقدي.

مصادر