ਰੂਬੀ ਮਾਨਕ ਨਿਯੰਤਰਣ-ਪ੍ਰਵਾਹ (if, , ) ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ ਪਰ ਵਿਸ਼ੇਸ਼ ਅਤੇ ਸਪੱਸ਼ਟ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੇ ਨਾਲ: (), , ਸ਼ਕਤੀਸ਼ਾਲੀ , ਅਤੇ ਦੀ ਤਰਜੀਹ ਰਵਾਇਤੀ ਲੂਪਸ ਦੀ ਬਜਾਏ। ਰੂਬੀ ਵਿੱਚ ਨਿਯੰਤਰਣ ਵਾਹ ਕਾਹਲੀ ਢੰਗ ਨਾਲ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ।
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
ਰੂਬੀ ਦੀ ਸੰਸ਼ੋਧਨ ਅਸਮਰ੍ਯਾ (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 ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ — ਇਹ ਮੁੱਲ, ਸ਼੍ਰੇਣੀ, ਕਿਸਮਾਂ, ਅਤੇ (ਰੂਬੀ 3 ਵਿੱਚ) ਸੰਰਚਨਾਤਮਕ ਨਮੂਨਿਆਂ ਨਾਲ ਮਿਲਦਾ ਹੈ, === ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੋਇਆ। ਬੁਨਿਆਦੀ ਸਵਿਚ ਨਾਲੋਂ ਕਿਤੇ ਵਧੇਰੇ ਲਚਕਦਾਰ।
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| ... }
ਰੂਬੀ ਕੋਲ while/until ਹਨ, ਪਰ ਰਵਾਇਤੀ ਰੂਬੀ ਸਪੱਸ਼ਟ ਲੂਪਸ ਦੀ ਬਜਾਏ ਬਲਾਕ ਰਾਹੀਂ ਆਵਰਤਨ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੀ ਹੈ (each, times, map) — ਵਧੇਰੇ ਸਪੱਸ਼ਟ ਅਤੇ ਰੂਬੀ ਨਰਕ।
ਰੂਬੀ ਦੇ ਨਿਯੰਤਰਣ ਪ੍ਰਵਾਹ ਨੂੰ ਸਮਝਣਾ ਬੁਨਿਆਦੀ ਰੋਜ਼ਮੰਦ ਗਿਆਨ ਹੈ, ਅਤੇ ਕਈ ਵਿਸ਼ੇਸ਼ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਰੂਬੀ ਦੇ ਸਪੱਸ਼ਟ, ਪੜ੍ਹਨਯੋਗ ਦਰਸ਼ਨ ਨੂੰ ਪ੍ਰਤੀਬਿੰਬਤ ਕਰਦੀਆਂ ਹਨ।
ਸੰਸ਼ੋਧਨ ਅਸਮਰ੍ਯਾ (do_x if condition) ਅਤੇ unless (= "ਜੇ ਨਹੀਂ") ਤੁਹਾਨੂੰ ਸੰਖੇਪ, ਅੰਗਰੇਜ਼ੀ ਵਰਗੀਆਂ ਸ਼ਰਤਾਂ ਲਿਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀਆਂ ਹਨ ਜੋ ਰਵਾਇਤੀ ਰੂਬੀ ਹਨ ਅਤੇ ਲਗਾਤਾਰ ਦਿਖਾਈ ਦਿੰਦੀਆਂ ਹਨ।
ਤੱਥ ਇਹ ਹੈ ਕਿ if ਇੱਕ ਸਮੀਕਰਨ ਹੈ (ਇੱਕ ਮੁੱਲ ਵਾਪਸ ਕਰਦੇ ਹੋਏ) ਸ਼ਾਨਦਾਰ ਅਸਾਈਨਮੈਂਟ ਨੂੰ ਸਮਰੱਥ ਬਣਾਉਂਦਾ ਹੈ।
ਰੂਬੀ ਦਾ case/when ਖਾਸ ਤੌਰ 'ਤੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਹੈ — ਮੁੱਲ, ਸ਼੍ਰੇਣੀ, ਕਿਸਮਾਂ, ਅਤੇ (ਰੂਬੀ 3 ਵਿੱਚ) === ਦੁਆਰਾ ਸੰਰਚਨਾਤਮਕ ਨਮੂਨਿਆਂ ਨਾਲ ਮੇਲ — ਇਸਨੂੰ ਬੁਨਿਆਦੀ ਸਵਿਚ ਨਾਲੋਂ ਕਿਤੇ ਵਧੇਰੇ ਲਚਕਦਾਰ ਬਣਾਉਂਦੀ ਹੈ ਅਤੇ ਸਾਫ ਬਹੁ-ਤਰੀਕਾ ਸ਼ਾਖਾ ਲਈ ਲਾਭਦਾਇਕ।
eally, ਰਵਾਇਤੀ ਰੂਬੀ ਸ਼ਾਖਿਅ ਲੂਪਸ ਨਾਲ ਆਵਰਤਨ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੀ ਹੈ (each, times, map, upto) ਪਰੰਪਰਾਗਤ for/while ਲੂਪਸ ਦੀ ਬਜਾਏ — ਇਹ ਇੱਕ ਸੰਜੀਵ ਸ਼ੈਲੀ ਵਾਲਾ ਬਿੰਦੂ ਹੈ: ਰੂਬੀ ਵਿਕਾਸਕਰਤਾ ਸੰਗ੍ਰਹ ਅਤੇ ਸ਼੍ਰੇਣੀਆਂ ਨਾਲ ਸਪੱਸ਼ਟ ਲੂਪਸ ਦੀ ਬਜਾਏ ਬਲਾਕ-ਆਧਾਰਿਤ ਵਿਧੀਆਂ ਨਾਲ ਆਵਰਤਨ ਕਰਦੇ ਹਨ, ਜੋ ਕਿ ਵਧੇਰੇ ਸਪੱਸ਼ਟ ਅਤੇ ਰੂਬੀ-ਨਰਕ ਹੈ।
ਇਹਨਾਂ ਨਿਰਮਾਣਾਂ ਅਤੇ ਰਵਾਇਤਾਂ ਨੂੰ ਸਮਝਣਾ — ਪੜ੍ਹਨਯੋਗ ਸ਼ਰਤਾਂ ਲਈ ਸੰਸ਼ੋਧਨ ਅਤੇ unless, ਸ਼ਕਤੀਸ਼ਾਲੀ case/when, ਅਤੇ ਖਾਸ ਤੌਰ 'ਤੇ ਸ਼ਾਖਿਅ ਲੂਪਸ ਦੀ ਬਜਾਏ ਸਪੱਸ਼ਟ ਲੂਪਸ ਦੀ ਤਰਜੀਹ — ਲਿਖਣ ਅਤੇ ਰਵਾਇਤੀ ਰੂਬੀ ਪੜ੍ਹਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ।
ਕਿਉਂਕਿ ਨਿਯੰਤਰਣ ਵਾਹ ਹਰ ਪ੍ਰੋਗ੍ਰਾਮ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ, ਅਤੇ ਕਿਉਂਕਿ ਰੂਬੀ ਦਾ ਸਪੱਸ਼ਟ ਅਸਮਰ੍ਯਾ (ਸੰਸ਼ੋਧਨ, unless, ਸ਼ਕਤੀਸ਼ਾਲੀ ਕੇਸ, ਬਲਾਕ ਆਵਰਤਨ) ਇਸਦੇ ਪੜ੍ਹਨਯੋਗਤਾ-ਕੇਂਦਰਿਤ ਦਰਸ਼ਨ ਨੂੰ ਸਮਿਟ ਕਰਦੀਆਂ ਹਨ, ਇਸਨੂੰ ਸਿੱਖਣਾ ਜ਼ਰੂਰੀ, ਬੁਨਿਆਦੀ ਗਿਆਨ ਹੈ ਦੂਜੀਆਂ ਭਾਸ਼ਾਵਾਂ ਤੋਂ ਲੂਪ-ਭਰੇ ਪੈਟਰਨਾਂ ਦਾ ਅਨੁਵਾਦ ਕਰਨ ਦੀ ਬਜਾਏ ਪ੍ਰਾਕਿਰਤਕ, ਰਵਾਇਤੀ ਰੂਬੀ ਲਿਖਣ ਲਈ।