التابع step‎ الخاص بالصنف Numeric في روبي

من موسوعة حسوب

يستدعي التابع 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: يعيد القيمة كعدد عقدي.

مصادر