English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
استخدام الدوائر في Ruby لتنفيذ نفس الكود عدة مرات. في هذا الفصل سيتم شرح جميع جمل الدوائر المدعومة من Ruby.
while conditional [تفعل] code نهاية
أو
while conditional [:] code نهاية
عندما الشرط عندما تكون صحيحة، تفعل code.
في الجملة يمكن تجاهل كلمة do أو :. ولكن إذا كنت تريد كتابة جملة while في سطر واحد، فيجب استخدام do أو : لتقسيم الشروط أو الفقرات البرمجية.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num تفعل puts("في جملة الدائرة i = #$i" ) $i +=1 نهاية
نتيجة النسخة التجريبية أعلاه هي:
في جملة الدائرة i = 0 في جملة الدائرة i = 1 في جملة الدائرة i = 2 في جملة الدائرة i = 3 في جملة الدائرة i = 4
كود while شرط أو begin code تنتهي الدائرة while conditional
عندما الشرط عندما تكون صحيحة، تفعل code.
إذا while المعدل يتبع rescue أو جملة ensure begin الجملة،code بعد الشرط التحقق مرة واحدة قبل التنفيذ.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("في جملة الدائرة i = #$i" ) $i +=1 تنتهي الدائرة while $i < $num
نتيجة النسخة التجريبية أعلاه هي:
في جملة الدائرة i = 0 في جملة الدائرة i = 1 في جملة الدائرة i = 2 في جملة الدائرة i = 3 في جملة الدائرة i = 4
حتى conditional [تفعل] code نهاية
عندما الشرط عندما يكون خطأ code.
في الجملة يمكن تجاهل كلمة do. ولكن إذا كنت تريد كتابة جملة until في سطر واحد، فيجب استخدام do لتقسيم الشروط أو الفقرات البرمجية.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 حتى $i > $num تفعل puts("في جملة الدائرة i = #$i" ) $i +=1; نهاية
نتيجة النسخة التجريبية أعلاه هي:
في جملة الدائرة i = 0 في جملة الدائرة i = 1 في جملة الدائرة i = 2 في جملة الدائرة i = 3 في جملة الدائرة i = 4 في جملة الدائرة i = 5
code until conditional أو begin code end until conditional
عندما الشرط عندما يكون code.
إذا until المعدل يتبع rescue أو جملة ensure begin الجملة،code بعد الشرط التحقق مرة واحدة قبل التنفيذ.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("في جملة الدائرة i = #$i" ) $i +=1; end until $i > $num
نتيجة النسخة التجريبية أعلاه هي:
في جملة الدائرة i = 0 في جملة الدائرة i = 1 في جملة الدائرة i = 2 في جملة الدائرة i = 3 في جملة الدائرة i = 4 في جملة الدائرة i = 5
for variable [, variable ...] in expression [do] code نهاية
يتم حساب التعبير أولاً للحصول على كائن، ثم تنفيذ expression يتم تنفيذ كل عنصر منه مرة واحدة code.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- للمحاولات i في 0..5 puts "قيمة المتغير المحلي هي #{i}" نهاية
في هذا السياق، نحن نحدد نطاق 0..5. جملة for i in 0..5 تسمح لـ i بالتغير من 0 إلى 5 (بما في ذلك 5).
نتيجة النسخة التجريبية أعلاه هي:
قيمة المتغير المحلي هي 0 قيمة المتغير المحلي هي 1 قيمة المتغير المحلي هي 2 قيمة المتغير المحلي هي 3 قيمة المتغير المحلي هي 4 قيمة المتغير المحلي هي 5
for...in الدائرة تقريبًا متطابقة مع:
(expression).each do |variable[, variable...]| code end
لكن دائرة for لا تخلق مجالاً جديدًا للمتغيرات المحلية.
يمكن تجاهل do في النحو. ولكن إذا كنت تريد كتابة for في سطر واحد، فيجب استخدام do لتجزئة شرط أو كتلة البرنامج.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "قيمة المتغير المحلي هي #{i}" نهاية
نتيجة النسخة التجريبية أعلاه هي:
قيمة المتغير المحلي هي 0 قيمة المتغير المحلي هي 1 قيمة المتغير المحلي هي 2 قيمة المتغير المحلي هي 3 قيمة المتغير المحلي هي 4 قيمة المتغير المحلي هي 5
break
انهاء أعمق دائرة من الدوائر. إذا تم استدعاؤها داخل الكتلة، يتم إنهاء تنفيذ الكتلة (الطريقة تعود nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- للمحاولات i في 0..5 إذا i > 2 break نهاية puts "قيمة المتغير المحلي هي #{i}" نهاية
نتيجة النسخة التجريبية أعلاه هي:
قيمة المتغير المحلي هي 0 قيمة المتغير المحلي هي 1 قيمة المتغير المحلي هي 2
next
القفز إلى تكرار التكرار التالي. إذا تم استدعاؤها داخل الكتلة، يتم إنهاء تنفيذ الكتلة (yield يعود التعبير nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- للمحاولات i في 0..5 إذا i < 2 next نهاية puts "قيمة المتغير المحلي هي #{i}" نهاية
نتيجة النسخة التجريبية أعلاه هي:
قيمة المتغير المحلي هي 2 قيمة المتغير المحلي هي 3 قيمة المتغير المحلي هي 4 قيمة المتغير المحلي هي 5
redo
تبدأ تكرار تكرار أعمق من الدائرة الحالية، دون فحص شرط الدائرة. إذا تم استدعاؤها داخل الكتلة، تبدأ من جديد yield أو call.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- للمحاولات i في 0..5 إذا i < 2 puts "قيمة المتغير المحلي هي #{i}" redo نهاية نهاية
سيكون لهذا النتيجة التالية، وسيحدث دورة لا نهائية:
قيمة المتغير المحلي هي 0 قيمة المتغير المحلي هي 0 ............................
ملاحظة: الإصدار 1.9 وما بعده لا يدعم استخدام retry داخل الدوال.
retry
إذا retry تظهر في جملة rescue من within جملة begin، تبدأ الجملة من بداية الجسم begin.
begin do_something # استثنائية مطلقة rescue # معالجة الأخطاء retry # يبدأ من جديد من begin نهاية
إذا كان retry يظهر داخل التكرار أو الكتلة أو جسم تعبير for، فإن التكرار يبدأ من جديد. سيتم تقييم معلمات التكرار مرة أخرى.
للأرقام في 1..5 retry إذا كان some_condition # يبدأ من جديد من i == 1 نهاية
#!/usr/bin/ruby # -*- coding: UTF-8 -*- للأرقام في 1..5 retry إذا كان i > 2 puts "قيمة المتغير المحلي هي #{i}" نهاية
سيكون لهذا النتيجة التالية، وسيحدث دورة لا نهائية:
قيمة المتغير المحلي هي 1 قيمة المتغير المحلي هي 2 قيمة المتغير المحلي هي 1 قيمة المتغير المحلي هي 2 قيمة المتغير المحلي هي 1 قيمة المتغير المحلي هي 2 ............................