CodeGym /Java Blog /यादृच्छिक /टर्नरी ऑपरेटर
John Squirrels
पातळी 41
San Francisco

टर्नरी ऑपरेटर

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
हाय! आजचा धडा फार मोठा नसेल, पण तो नक्कीच उपयोगी पडेल :) आम्ही तथाकथित ternary operator बद्दल बोलणार आहोत . टर्नरी ऑपरेटर - १टर्नरी म्हणजे " तीन भागांनी बनलेले ". if-elseतुम्ही आधीच भेटलेल्या कंट्रोल फ्लो स्टेटमेंटचा हा पर्याय आहे . एक उदाहरण देऊ. समजा एखाद्याने आर-रेट केलेल्या चित्रपटात जाण्याचा निर्णय घेतला (१७ वर्षांखालील व्यक्तीला सोबत असलेले पालक किंवा प्रौढ पालक आवश्यक आहे). अशर दारात त्याचे वय तपासतो: जर त्याने वयाची तपासणी केली असेल तर त्याला आत जाण्याची परवानगी आहे; नाही तर त्याला घरी पाठवले जाते. चला Personवर्ग घोषित करू आणि विधान वापरून हे तपासू if-else:

public class Person {

   private int age;

   public Person(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Person person = new Person(22);

       String usherResponse;

       if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }

       System.out.println(usherResponse);

   }
}
कन्सोल आउटपुट:

"Everything is in order. Come in!"
आम्ही कन्सोल आउटपुट काढून टाकल्यास, आमचा चेक असे दिसेल:

if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }
येथे तर्कशास्त्र अगदी सोपे आहे: एक अट तपासली आहे (वय >= 18) निकालाच्या आधारे, व्हेरिएबलला usherResponseअशरच्या प्रतिसादासह दोनपैकी एक स्ट्रिंग नियुक्त केले आहे. प्रोग्रामिंगमध्ये अशा परिस्थिती ("एक अट - दोन संभाव्य परिणाम") अत्यंत सामान्य आहेत. आणि म्हणूनच टर्नरी ऑपरेटरची निर्मिती झाली. आम्ही कोडच्या एका ओळीत आमचा चेक सुलभ करण्यासाठी याचा वापर करू शकतो:

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
हा ऑपरेटर कसा काम करतो ते येथे आहे. याला टर्नरी ऑपरेटर म्हणतात, कारण त्यात 3 घटक असतात:
  • एक अट ( person.getAge() > 18)
  • दोन संभाव्य परिणाम ( "सर्व काही व्यवस्थित आहे. आत या!" आणि "हा चित्रपट तुमच्या वयासाठी योग्य नाही!" )
प्रथम, आम्ही अट लिहितो, त्यानंतर प्रश्नचिन्ह लिहितो.

person.getAge() > 18 ?
"या व्यक्तीचे वय १८ पेक्षा जास्त आहे का?" मग आपण प्रथम मूल्य लिहू . स्थितीचे मूल्यमापन केल्यासtrue हे मूल्य वापरले जाते :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
या व्यक्तीचे वय १८ पेक्षा जास्त आहे का? होय असल्यास, usherResponse व्हेरिएबल सेट करा "सर्व काही व्यवस्थित आहे. आत या!" पुढे " :" चिन्ह आणि दुसरे मूल्य येते . स्थितीचे मूल्यमापन केल्यासfalse हे मूल्य वापरले जाते :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
या व्यक्तीचे वय १८ पेक्षा जास्त आहे का? होय असल्यास, usherResponse व्हेरिएबल सेट करा "सर्व काही व्यवस्थित आहे. आत या!" . नसल्यास, "हा चित्रपट तुमच्या वयासाठी योग्य नाही!"usherResponse असे व्हेरिएबल सेट करा. सर्वसाधारणपणे, टर्नरी ऑपरेटरचे तर्क कसे दिसते ते येथे आहे. अट ? परिणाम 1 : परिणाम 2 टर्नरी ऑपरेटर - 2 तसे, स्थितीभोवती कंस आवश्यक नाहीत: अधिक वाचनीयतेसाठी आम्ही ते जोडले. हे त्यांच्याशिवाय देखील कार्य करते:

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
तर आपण काय वापरावे? स्टेटमेंट if-elseकिंवा टर्नरी ऑपरेटर? कामगिरीच्या बाबतीत, कोणताही फरक नाही. अधिक अचूकपणे, कदाचित तेथे आहे, परंतु ते नगण्य आहे. येथे सर्वात मोठा विचार म्हणजे तुमच्या कोडची वाचनीयता. तुम्ही लिहिलेला कोड केवळ योग्यरितीने चालत नाही तर वाचायलाही सोपा असावा . शेवटी, ते इतर प्रोग्रामर, तुमच्या सहकाऱ्यांकडून "वारसा" मिळालेले असू शकते! जर ते समजणे कठीण असेल, तर ते त्यांचे आणि तुमचे काम गुंतागुंतीत करेल (ते दर 5 मिनिटांनी स्पष्टीकरणासाठी तुमच्याकडे धावून येतील). सामान्य शिफारस अशी आहे: जर स्थिती सोपी आणि सहजपणे सत्यापित केली गेली असेल, तर तुम्ही हानी न करता टर्नरी ऑपरेटर वापरू शकता. हे तुम्हाला कोडचे प्रमाण आणि संख्या कमी करू देतेif-elseविधाने (आणि कदाचित त्यापैकी बरेच असू शकतात). परंतु जर स्थिती गुंतागुंतीची असेल आणि अनेक पायऱ्यांचा समावेश असेल, तर विधान वापरणे चांगले if-else. उदाहरणार्थ, या प्रकरणात टर्नरी ऑपरेटर वापरणे ही वाईट कल्पना असेल:

String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
इथे काय घडत आहे हे लगेच कळत नाही! संहिता वाचणे फार कठीण झाले आहे. आणि सर्व जटिल स्थितीमुळे:
  • जर कोणी 18 वर्षांपेक्षा मोठे असेल, त्याच्याकडे तिकीट असेल (किंवा विनामूल्य पास), आणि लहान मुले नसतील, तर तो आत येऊ शकतो.
  • जर अटीचा एक भाग देखील खोटा असेल तर तो करू शकत नाही.
येथे ते वापरणे स्पष्टपणे चांगले आहे if-else. होय, आमचा कोड मोठा असेल, परंतु तो खूप वाचनीय असेल. आणि तुमच्या सहकाऱ्यांना हा कोड वारसा मिळाल्यास त्यांना पामचा सामना करावा लागणार नाही :) शेवटी, मी तुमच्यासाठी एक चांगली शिफारस करू शकतो. आम्ही धड्यादरम्यान कोड वाचनीयतेला स्पर्श केला. रॉबर्ट मार्टिनचे पुस्तक "क्लीन कोड", जे एक क्लासिक बनले आहे, या विषयाला समर्पित आहे. टर्नरी ऑपरेटर - 4हे प्रोग्रामरसाठी सर्वोत्कृष्ट पद्धती आणि शिफारसी एकत्र आणते, जे तुम्हाला कोड लिहिण्यास मदत करेल जे केवळ कार्यशील नाही तर सहज वाचनीय देखील आहे.
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION