Ruby में फ्लो कंट्रोल एक्सप्रेशन होते हैं। इनका उपयोग यह तय करने के लिए किया जाता है कि प्रोग्राम कैसे चलेगा, और ये सत्य या असत्य मान लेते हैं। कुछ ऑपरेटर ऐसे मान बनाने के लिए इस्तेमाल किए जा सकते हैं जो सत्य या असत्य होते हैं। इन्हें तुलना ऑपरेटर कहा जाता है।
दो मुख्य कंट्रोल एक्सप्रेशन यह तय करते हैं कि कौन-सा कोड चलेगा और कौन-सा नहीं। यानी यह कि कौन-सी शाखा चलेगी।
ये दो हैं: if और unless एक्सप्रेशन।
तुलना ऑपरेटर का उपयोग वैल्यू की तुलना करने और true या false वैल्यू लौटाने के लिए किया जाता है।
नीचे दिए गए ऑपरेटरों को तुलना के लिए एक ही टाइप की दो वैल्यू चाहिए।
अगर वैल्यू एक ही टाइप की नहीं हैं, तो कंपाइलर एक एरर देता है।
यहाँ ऑपरेटरों की सूची और एक उदाहरण दिया गया है, जहाँ वे true वैल्यू देते हैं:
| मेथड | विवरण | उदाहरण |
|---|---|---|
| < | इससे कम | 4 < 5 |
| <= | इससे कम या बराबर | 4 <= 4 |
| > | इससे अधिक | 3 > 1 |
| >= | इससे अधिक या बराबर | 2 >= 2 |
ऊपर बताए गए ऑपरेटरों के विपरीत, बराबर और बराबर नहीं वाले ऑपरेटर किसी भी टाइप की वैल्यू की तुलना के लिए इस्तेमाल किए जा सकते हैं।
== ऑपरेटर यह जाँचने के लिए इस्तेमाल होता है कि दो वैल्यू बराबर हैं या नहीं, और इसमें वैल्यू का टाइप भी जाँचा जाता है।
!= भी इसी तरह काम करता है, लेकिन यह true तब लौटाता है जब वैल्यू बराबर न हों, और false तब जब वे बराबर हों।
यहाँ बराबर और बराबर नहीं वाले ऑपरेटरों की सूची और एक उदाहरण दिया गया है, जहाँ वे true वैल्यू देते हैं:
| मेथड | विवरण | उदाहरण |
|---|---|---|
| == | बराबर | 4 == 4 |
| != | बराबर नहीं | 5 != 4 |
संयुक्त तुलना ऑपरेटर (जिसे कभी-कभी स्पेसशिप ऑपरेटर भी कहा जाता है) एक खास तुलना ऑपरेटर है।
यह इस मायने में खास है कि यह सत्य या असत्य मान नहीं, बल्कि एक संख्या लौटाता है।
इसे <=> के रूप में लिखा जाता है और इसका उपयोग दो वैल्यू की तुलना करने के लिए किया जाता है।
अगर बाईं वैल्यू दाईं वैल्यू से अधिक है तो यह 1 लौटाता है, अगर बाईं वैल्यू दाईं वैल्यू से कम है तो -1, और अगर दोनों वैल्यू बराबर हैं तो 0।
1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1
if स्टेटमेंटif स्टेटमेंट यह जाँचने के लिए इस्तेमाल होता है कि दी गई शर्त सत्य है या असत्य।
अगर शर्त सत्य है, तो if स्टेटमेंट के अंदर का कोड चलता है।
एक if स्टेटमेंट end कीवर्ड पर खत्म होता है।
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless स्टेटमेंटunless स्टेटमेंट लगभग if स्टेटमेंट की तरह ही काम करता है, लेकिन अगर शर्त असत्य है तो यह unless स्टेटमेंट के अंदर का कोड चलाता है।
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else स्टेटमेंटelse स्टेटमेंट का उपयोग if स्टेटमेंट के साथ मिलाकर किया जा सकता है।
अगर if शाखा नहीं चलती, तो else स्टेटमेंट चलता है।
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
else
"1 is not greater than 2"
end
# => "1 is not greater than 2"
elsif स्टेटमेंट का उपयोग if स्टेटमेंट के साथ मिलाकर किया जा सकता है।
अगर if शाखा नहीं चलती और elsif स्टेटमेंट की शर्त सत्य है, तो elsif स्टेटमेंट चलता है।
कई elsif स्टेटमेंट एक के बाद एक जोड़े जा सकते हैं, और पहली सत्य शर्त वाला स्टेटमेंट चलता है।
if स्टेटमेंट के अंत में एक else स्टेटमेंट भी हो सकता है, जो तब चलता है जब पहले का कोई भी स्टेटमेंट सत्य न हुआ हो।
value = 1
if value == 0
"1 is equal to 0"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"
if और unless प्रत्यय के रूप मेंif और unless स्टेटमेंट का उपयोग [प्रत्यय][if-as-suffix] के रूप में भी किया जा सकता है। यह तब काम आता है जब आप किसी शर्त के सत्य होने पर कोड की एक ही लाइन चलाना चाहते हों।
इसके लिए if या unless स्टेटमेंट को उस कोड के बाद लिखा जाता है जिसे आप चलाना चाहते हैं।
value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1
"1 is not equal to 1" unless value == 1
# => nil