الفرق بين المراجعتين لصفحة: «Ruby/Kernel/loop»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) طلا ملخص تعديل |
||
سطر 5: | سطر 5: | ||
ينفذ التابع <code>loop</code> الكتلة البرمجية المعطاة بشكل متكرر. | ينفذ التابع <code>loop</code> الكتلة البرمجية المعطاة بشكل متكرر. | ||
في حال لم | في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف <code>[[Ruby/Enumerator|enumerator]]</code> بدلاً من ذلك. | ||
يؤدي اطلاق الاستثناء <code>StopIteration</code> داخل الكتلة إلى إيقاف الحلقة التكرارية. | يؤدي اطلاق الاستثناء <code>[[Ruby/StopIteration|StopIteration]]</code> داخل الكتلة إلى إيقاف الحلقة التكرارية. في هذه الحالة، سيعيد التابع <code>loop</code> قيمة "النتيجة" المخزنة في الاستثناء. | ||
==البنية العامة== | ==البنية العامة== | ||
<syntaxhighlight lang="ruby">loop { block } | <syntaxhighlight lang="ruby">loop { block } | ||
loop→ an_enumerator</syntaxhighlight> | loop→ an_enumerator</syntaxhighlight> | ||
==القيمة | ==القيمة المعادة== | ||
يؤدي اطلاق الاستثناء <code>StopIteration</code> داخل | يؤدي اطلاق الاستثناء [[Ruby/StopIteration|<code>StopIteration</code>]] داخل الكتلة إلى إعادة قيمة "النتيجة" المخزنة في الاستثناء. أما في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف <code>[[Ruby/Enumerator|enumerator]]</code>. | ||
==أمثلة== | ==أمثلة== | ||
مثال على استخدام التابع <code>loop</code>: | مثال على استخدام التابع <code>loop</code>:<syntaxhighlight lang="ruby">loop do | ||
<syntaxhighlight lang="ruby">loop do | |||
print "Input: " | print "Input: " | ||
line = gets | line = gets | ||
break if !line or line =~ /^qQ/ | break if !line or line =~ /^qQ/ | ||
# ... | # ... | ||
end</syntaxhighlight> | end</syntaxhighlight>مثالٌ آخر على استعمال التابع <code>loop</code>:<syntaxhighlight lang="ruby"> | ||
enum = Enumerator.new { |y| | |||
y << "one" | |||
y << "two" | |||
:ok | |||
} | |||
result = loop { | |||
puts enum.next | |||
} #=> :ok | |||
</syntaxhighlight> | |||
==انظر أيضا== | ==انظر أيضا== | ||
* التابع <code>[[Ruby/Kernel/lambda|lambda]]</code>: يكافئ | *التابع <code>[[Ruby/Kernel/lambda|lambda]]</code>: يكافئ التعبير <code>Proc.new</code>، باستثناء أنّ كائنات <code>Proc</code> الناتجة ستتحقق من عدد الوسائط الممررة عند استدعائها. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-loop قسم | *[http://ruby-doc.org/core-2.5.1/Kernel.html#method-i-loop قسم التابع loop في الصنف Kernel في توثيق روبي الرسمي.] |
المراجعة الحالية بتاريخ 14:51، 15 نوفمبر 2018
ينفذ التابع loop
الكتلة البرمجية المعطاة بشكل متكرر.
في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف enumerator
بدلاً من ذلك.
يؤدي اطلاق الاستثناء StopIteration
داخل الكتلة إلى إيقاف الحلقة التكرارية. في هذه الحالة، سيعيد التابع loop
قيمة "النتيجة" المخزنة في الاستثناء.
البنية العامة
loop { block }
loop→ an_enumerator
القيمة المعادة
يؤدي اطلاق الاستثناء StopIteration
داخل الكتلة إلى إعادة قيمة "النتيجة" المخزنة في الاستثناء. أما في حال لم تُعطَ أية كتلة، فسيُعاد كائن من الصنف enumerator
.
أمثلة
مثال على استخدام التابع loop
:
loop do
print "Input: "
line = gets
break if !line or line =~ /^qQ/
# ...
end
مثالٌ آخر على استعمال التابع loop
:
enum = Enumerator.new { |y|
y << "one"
y << "two"
:ok
}
result = loop {
puts enum.next
} #=> :ok
انظر أيضا
- التابع
lambda
: يكافئ التعبيرProc.new
، باستثناء أنّ كائناتProc
الناتجة ستتحقق من عدد الوسائط الممررة عند استدعائها.