CodeGym /جاوا بلاگ /Random-SD /جاوا ٽرنري آپريٽر
John Squirrels
سطح
San Francisco

جاوا ٽرنري آپريٽر

گروپ ۾ شايع ٿيل
سلام اڄ جو سبق گهڻو ڊگهو نه هوندو، پر اهو ضرور ڪارائتو هوندو :) اسان ڳالهائڻ وارا آهيون نام نهاد ٽرنري آپريٽر بابت . ٽرنري آپريٽر - 1Ternary جو مطلب آهي " ٽي حصن مان ٺهيل ". اهو هڪ متبادل آهي if-elseڪنٽرول وهڪري جي بيان جو جيڪو توهان اڳ ۾ ئي ملي چڪو آهي. اچو ته هڪ مثال ڏيو. فرض ڪريو ڪنهن هڪ آر-رٽيڊ ٿيل فلم ۾ وڃڻ جو فيصلو ڪيو (17 کان گهٽ هڪ والدين يا بالغ سرپرست جي ضرورت آهي). عشر دروازي تي پنهنجي عمر چيڪ ڪري ٿو: جيڪڏهن هن عمر جي چڪاس پاس ڪئي، هن کي داخل ٿيڻ جي اجازت آهي؛ جيڪڏهن نه، هن کي گهر موڪليو ويندو. اچو ته هڪ 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 ?
"ڇا هن شخص جي عمر 18 کان وڌيڪ آهي؟" پوء اسان پهريون قدر لکون ٿا . هي قدر استعمال ڪيو ويندو آهي جيڪڏهن حالت جو اندازو لڳايو وڃي ٿوtrue :
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
ڇا هن شخص جي عمر 18 کان وڌيڪ آهي؟ جيڪڏهن ها، usherResponse متغير کي سيٽ ڪريو "هر شي ترتيب ۾ آهي. اندر اچو!" اڳيان اچي ٿو " :" علامت ۽ ٻيو قدر . هي قدر استعمال ڪيو ويندو آهي جيڪڏهن حالت جو اندازو لڳايو وڃي ٿوfalse :
String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
ڇا هن شخص جي عمر 18 کان وڌيڪ آهي؟ جيڪڏهن ها، 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