الفرق بين المراجعتين لصفحة: «Ruby/Numeric/step»
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>step</code> الخاص بالصنف <code>Numeric</code> في روبي}}</noinclude> تصنيف: Ruby تصني...' |
جميل-بيلوني (نقاش | مساهمات) ط مراجعة وتدقيق. |
||
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE: التابع <code>step | <noinclude>{{DISPLAYTITLE: التابع <code>Numeric.step</code> في روبي}}</noinclude> | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby Numeric]] | [[تصنيف: Ruby Numeric]] | ||
يستدعي التابع <code>step</code> الكتلة المعطاة مع تمرير سلسلة من الأعداد إليها بدءًا من العدد الذي استُدعي معه | يستدعي التابع <code>step</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> سالبًا. | ||
عند استخدام صياغة [[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>) لأسباب تتعلق بالتوافق مع الإصدارات القديمة. | |||
= | إن كانت جميع الوسائط أعدادًا صحيحةً، فإن الحلقة ستعمل باستخدام عداد صحيح (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/ | * التابع <code>[[Ruby/Numeric/to_c|to_c]]</code>: يحول العدد الذي استدعي معه إلى عدد عقدي. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Numeric.html#method-i-step قسم | *[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
: يحول العدد الذي استدعي معه إلى عدد عقدي.