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