الفرق بين المراجعتين ل"Ruby/Numeric/step"

من موسوعة حسوب
< Ruby‏ | Numeric
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>step‎</code> الخاص بالصنف <code>Numeric</code> في روبي}}</noinclude> تصنيف: Ruby تصني...')
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Numeric]]
 
[[تصنيف: Ruby Numeric]]
يستدعي التابع <code>step</code> الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه <code>num</code>، بالخطوة <code>step</code> (قيمتها الافتراضية هي <code>1</code>) في كل استدعاء.
+
يستدعي التابع <code>step</code> الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه (<code>num</code>)، ويصعد بالخطوة <code>step</code> (قيمتها الافتراضية <code>1</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>limit</code> (إن كان <code>step</code> موجبًا)ـ أو أصغر من <code>limit</code> (إن كان <code>step</code> سالباً)، قيمة <code>limit</code> الافتراضية هي اللانهاية.
<code>Enumerator</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
سطر 20: سطر 18:
 
step(limit=nil, step=1)→  an_enumerator‎</syntaxhighlight>
 
step(limit=nil, step=1)→  an_enumerator‎</syntaxhighlight>
 
==المعاملات==
 
==المعاملات==
===<code>by: step‎</code>===
+
===<code>step‎</code>===
 
+
عدد يمثل خطوة التكرار.
===<code>to: limit‎</code>===
 
  
 
===<code>limit‎</code>===
 
===<code>limit‎</code>===
 
+
عدد يمثل حد الحلقة التكرارية.
===<code>step‎</code>===
 
 
 
  
 
==القيمة المُعادة==
 
==القيمة المُعادة==
 +
يعيد  التابع <code>step</code> الكائن الذي استُدعي معه، وفي حال لم تُعطى أي كتلة، فسيُعاد كائن من الصنف <code>[[Ruby/Enumerator|enumerator]].</code>
  
 
==أمثلة==
 
==أمثلة==
سطر 37: سطر 33:
 
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="ruby">[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‎ في توثيق روبي الرسمي.]

مراجعة 00:01، 28 أكتوبر 2018

يستدعي التابع step الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه (num)، ويصعد بالخطوة step (قيمتها الافتراضية 1) في كل استدعاء.

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

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

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

في حال لم تُعطى أي كتلة، فسيُعاد كائن من الصنف enumerator بدلاً من ذلك

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

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

المعاملات

step‎

عدد يمثل خطوة التكرار.

limit‎

عدد يمثل حد الحلقة التكرارية.

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

يعيد التابع step الكائن الذي استُدعي معه، وفي حال لم تُعطى أي كتلة، فسيُعاد كائن من الصنف 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: يعيد القيمة كعدد عقدي.

مصادر