ज्यादातर कंप्यूटर की भाषाएँमामला या स्थिति (के रूप में भी जाना जाता है स्विच) कथन कई स्थिरांक या शाब्दिक के साथ एक चर के मूल्य की तुलना करता है और एक मिलान मामले के साथ पहला पथ निष्पादित करता है। में माणिक, यह थोड़ा अधिक लचीला (और शक्तिशाली) है।
एक साधारण समानता परीक्षण किए जाने के बजाय, केस समानता ऑपरेटर का उपयोग किया जाता है, जो कई नए उपयोगों के लिए द्वार खोलता है।
हालांकि अन्य भाषाओं से कुछ अंतर हैं। में सी, एक स्विच स्टेटमेंट श्रृंखला की एक तरह की जगह है अगर और गोटो बयान। मामले तकनीकी रूप से लेबल हैं, और स्विच स्टेटमेंट मिलान लेबल पर जाएगा। यह एक व्यवहार है जिसे "परती" कहा जाता है, क्योंकि जब यह किसी अन्य लेबल तक पहुंचता है तो निष्पादन बंद नहीं होता है।
यह आमतौर पर एक ब्रेक स्टेटमेंट का उपयोग करने से बचा जाता है, लेकिन कभी-कभी नीच जानबूझकर होता है। दूसरी ओर रूबी में केस स्टेटमेंट को एक श्रृंखला के लिए शॉर्टहैंड के रूप में देखा जा सकता है अगर बयान। कोई गिरावट नहीं है, केवल पहले मिलान वाले मामले को निष्पादित किया जाएगा।
केस स्टेटमेंट का मूल रूप
केस स्टेटमेंट का मूल रूप इस प्रकार है।
जैसा कि आप देख सकते हैं, यह एक if / if की तरह कुछ संरचित है अगर / और सशर्त विवरण। नाम (जिसे हम कॉल करेंगे)
मूल्य), इस मामले में कीबोर्ड से इनपुट किया जाता है, की तुलना प्रत्येक मामले से की जाती है कब क्लॉस (i.e.) मामलों), और पहली बार जब एक मिलान मामले के साथ ब्लॉक निष्पादित किया जाएगा। यदि उनमें से कोई भी मेल नहीं खाता है, तो अन्य ब्लॉक निष्पादित किया जाएगा।यहाँ क्या दिलचस्प है किस तरह मान प्रत्येक मामलों की तुलना में है। जैसा कि ऊपर बताया गया है, में सी ++, और अन्य सी-लाइक भाषाओं में, एक साधारण मूल्य तुलना का उपयोग किया जाता है। रूबी में, केस समानता ऑपरेटर का उपयोग किया जाता है।
याद रखें कि एक केस समानता ऑपरेटर के बाएं हाथ का प्रकार महत्वपूर्ण है, और मामले हमेशा बाएं हाथ की तरफ होते हैं। तो, प्रत्येक के लिए कब खंड, रूबी मूल्यांकन करेगा मामला मूल्य जब तक यह एक मैच पाता है।
अगर हम इनपुट थे बॉब, रूबी पहले मूल्यांकन करेगा "ऐलिस" "बॉब", जो बाद से गलत होगा स्ट्रिंग # स्ट्रिंग्स की तुलना के रूप में परिभाषित किया गया है। आगे, / इस्क्राडिंग्स .+/i "बॉब" निष्पादित किया जाएगा, जो बाद से गलत है बॉब Q, R या Z से शुरू नहीं होता है
चूंकि किसी भी मामले का मिलान नहीं हुआ है, रूबी तब दूसरे खंड को निष्पादित करेगी।
कैसे खेलें में टाइप आता है
केस स्टेटमेंट का एक सामान्य उपयोग मूल्य के प्रकार को निर्धारित करना और उसके प्रकार के आधार पर कुछ अलग करना है। हालांकि यह रूबी के प्रथागत बतख टाइपिंग को तोड़ता है, लेकिन कभी-कभी चीजों को प्राप्त करना आवश्यक होता है।
इस का उपयोग करके काम करता है कक्षा# (तकनीकी रूप से, मापांक#) ऑपरेटर, जो दाहिने हाथ की ओर परीक्षण करता है एक है? बाएं हाथ की ओर।
वाक्य रचना सरल और सुरुचिपूर्ण है:
एक और संभावित रूप
अगर द मूल्य छोड़ दिया जाता है, केस स्टेटमेंट कुछ अलग तरह से काम करता है: यह लगभग ठीक वैसा ही काम करता है जैसे एक / अगर और / तो स्टेटमेंट। केस स्टेटमेंट का उपयोग करने के फायदेअगर बयान, इस मामले में, केवल कॉस्मेटिक हैं।
एक अधिक कॉम्पैक्ट सिंटेक्स
ऐसे समय होते हैं जब बड़ी संख्या में छोटे होते हैं कब खंड। ऐसा केस स्टेटमेंट आसानी से स्क्रीन पर फिट होने के लिए बहुत बड़ा हो जाता है। जब यह मामला हो (कोई दंडित इरादा नहीं), तो आप इसका उपयोग कर सकते हैं फिर कीवर्ड के शरीर डाल करने के लिए कब उसी लाइन पर क्लॉज।
जबकि यह कुछ बहुत घने कोड के लिए बनाता है, जब तक कि प्रत्येक कब क्लॉज बहुत समान है, यह वास्तव में बन जाता है अधिक पठनीय।
जब आप एकल-पंक्ति और बहु-पंक्ति का उपयोग करना चाहिए जब खंड आपके ऊपर होते हैं, तो यह स्टाइल की बात है। हालांकि, दोनों को मिलाने की अनुशंसा नहीं की जाती है - एक केस स्टेटमेंट को यथासंभव पठनीय होने के लिए एक पैटर्न का पालन करना चाहिए।
केस असाइनमेंट
अगर बयानों की तरह, केस स्टेटमेंट में अंतिम स्टेटमेंट का मूल्यांकन किया जाता है कब खंड। दूसरे शब्दों में, उन्हें एक प्रकार की तालिका प्रदान करने के लिए असाइनमेंट में उपयोग किया जा सकता है। हालाँकि, यह मत भूलो कि केस स्टेटमेंट सरल एरे या हैश लुक से कहीं अधिक शक्तिशाली हैं। ऐसी तालिका में शाब्दिक रूप से उपयोग करने की आवश्यकता नहीं होती है कब खंड।
यदि क्लॉज के दौरान कोई मिलान नहीं है और कोई अन्य क्लॉज नहीं है, तो केस स्टेटमेंट का मूल्यांकन करेगा शून्य.