الفرق بين المراجعتين لصفحة: «Ruby/Numeric/step»
أنشأ الصفحة ب'<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>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> الافتراضية هي اللانهاية. | |||
<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> | ===<code>step</code>=== | ||
عدد يمثل خطوة التكرار. | |||
===<code>limit</code>=== | ===<code>limit</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/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
: يعيد القيمة كعدد عقدي.