Ruby გვთავაზობს სტანდარტულ კონტროლის ნაკადს (, , ), მაგრამ დამახასიათებელი, გამოხატული ფიჩারებით: (), , მძლავრი და უპირატესობა ტრადიციული ციკლების შედეგად. კონტროლის ნაკადი Ruby-ში ბუნებრივად იკითხება.
ifcasewhiledo_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
Ruby-ის case/when მძლავრია — იგი ემთხვევა მნიშვნელობებს, დიაპაზონებს, ტიპებს და (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 არის გამოხატულება (მნიშვნელობის დაბრუნება) აძლევს მოქნილ დანიშვულებებს.
Ruby-ის case/when ცნობილია მძლავრი — მნიშვნელობების, დიაპაზონების, ტიპებისა და (Ruby 3-ში) სტრუქტურული შაბლონების შესატყვისი ===-ის საშუალებით — რაც მას ბევრად უფრო მოქნილს ხდის ძირითად switch-ზე და სასარგებლოა სწორი მრავალმხრივი განშტოებისთვის.
მნიშვნელოვნად, იდიომატური Ruby სასურველია ბლოკებთან იტერაცია (each, times, map, upto) ტრადიციული for/while ციკლებზე — ეს განმარტებული სტილის წერტილია: Ruby დეველოპერი ამწოვის კოლექციებს და დიაპაზონებს ბლოკზე დაფუძნებული მეთოდებით ხელოვლური ციკლების ნაცვლად, რაც უფრო გამოხატული და Ruby-სებურია.
ამ კონსტრუქციებისა და იდიომების გაგება — მოდიფიკატორის ფორმა და unless წაკითხვადი პირობითებისთვის, მძლავრი case/when და განსაკუთრებით სასურველია ბლოკზე დაფუძნებული იტერაცია ხელოვლური ციკლებზე — მნიშვნელოვანია Ruby-ის წაკითხვადი და იდიომატური დასაწერად.
ვინაიდან კონტროლის ნაკადი ყველა პროგრამაში გამოჩნდება, და რადგან Ruby-ის გამოხატული ფორმები (მოდიფიკატორები, unless, მძლავრი case, ბლოკის იტერაცია) ამსახვის მის წაკითხვადობაზე ორიენტირებული ფილოსოფიას, მათი ოსტატობა აუცილებელი, ფუნდამენტური ცოდნაა ბუნებრივი, იდიომატური Ruby დასაწერად, ვიდრე მძიმე ციკლის შაბლონების თარგმნა სხვა ენებიდან.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა