يوفر Ruby خيارات التحكم في التدفق القياسية (if, , ) لكن مع ميزات مميزة وتعبيرية: ()، ، و القوي، وتفضيل بدلاً من الحلقات التقليدية. التحكم في التدفق في Ruby يقرأ بشكل طبيعي.
casewhiledo_x if conditionunlesscase/whenif age >= 18
puts "adult"
elsif age >= 13
puts "teen"
else
puts "child"
end
# MODIFIER form — condition at the END (reads like English, idiomatic for short cases)
puts "adult" if age >= 18
puts "minor" unless age >= 18 # `unless` = if not (more readable than `if !`)
# everything is an expression — if returns a value
grade = if score >= 90 then "A" else "B" end
الـشكل المعدل في Ruby (puts "x" if condition) يضع الشرط في النهاية لإنشاء سطر واحد موجز وسهل القراءة. unless (= "إذا لم") تُقرأ بشكل أطبع من النفي. وif هو تعبير يرجع قيمة.
case status
when :active then "running"
when :stopped, :paused then "halted" # multiple values
when 1..10 then "small number" # ranges
when String then "it's a string" # types (uses ===)
else "unknown"
end
# case can also do structural pattern matching (Ruby 3)
case data
in { name: String => name, age: Integer } # pattern matching with destructuring
puts name
end
case/when في Ruby قوي — فهو يطابق القيم والنطاقات والأنواع، وفي Ruby 3 الأنماط الهيكلية، باستخدام === تحت الغطاء. أكثر مرونة بكثير من switch الأساسي.
while count < 10 do count += 1 end
until done do ... end # until = while not
# ✅ but Ruby PREFERS iteration with blocks over explicit loops:
5.times { |i| puts i } # instead of a for loop
[1, 2, 3].each { |n| puts n } # iterate a collection
(1..10).each { |n| ... } # iterate a range
1.upto(5) { |i| ... }
Ruby يمتلك while/until، لكن Ruby الحقيقي يفضل التكرار مع الكتل (each, times, map) على الحلقات الصريحة — أكثر تعبيراً وروح Ruby.
فهم التحكم في التدفق في Ruby هو معرفة أساسية يومية، وعدة ميزات مميزة تعكس فلسفة Ruby الموجهة للتعبيرية والقراءة.
الـشكل المعدل (do_x if condition) و**unless** (= "إذا لم") تسمح لك بكتابة شروط موجزة وتشبه اللغة الإنجليزية وهي Ruby حقيقي وتظهر باستمرار.
حقيقة أن if هو تعبير (يرجع قيمة) تمكّن الإسناد الأنيق.
case/when في Ruby قوي بشكل ملحوظ — يطابق القيم والنطاقات والأنواع، وفي Ruby 3 الأنماط الهيكلية عبر === — مما يجعله أكثر مرونة بكثير من switch الأساسي ومفيد للتفرع متعدد الاتجاهات النظيف.
الأهم من ذلك، Ruby الحقيقي يفضل التكرار مع الكتل (each, times, map, upto) على حلقات for/while التقليدية — هذه نقطة أسلوب محددة: مطورو Ruby يكررون المجموعات والنطاقات مع الطرق القائمة على الكتل بدلاً من الحلقات الصريحة، وهي أكثر تعبيراً وروح Ruby.
فهم هذه الإنشاءات والأعراف — الشكل المعدل وunless للشروط القابلة للقراءة، وcase/when القوي، والأهم من ذلك التفضيل للتكرار القائم على الكتل على الحلقات الصريحة — مهم لكتابة وقراءة Ruby حقيقي وأنيق.
بما أن التحكم في التدفق يظهر في كل برنامج، وبما أن أشكال Ruby التعبيرية (المعدلات، unless، case قوي، تكرار الكتل) تجسد فلسفتها الموجهة للقراءة، فإن إتقانها معرفة أساسية وضرورية لكتابة Ruby طبيعي وحقيقي بدلاً من ترجمة أنماط ثقيلة على الحلقات من لغات أخرى.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع