JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ ٽرنري آپريٽر

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

گروپ ۾ شايع ٿيل
سلام! اڄ جو ليڪچر گھڻو ڊگھو نه ھوندو، پر ضرور ڪارائتو ھوندو :) اسان ڳالھائينداسين نام نهاد ٽرنري آپريٽر بابت . ٽرنري آپريٽر - 1"Ternary" جو مطلب آهي "ٽرپل". هي هڪ متبادل آهي مشروط آپريٽر if-else، جنهن سان توهان اڳ ۾ ئي واقف آهيو. اچو ته هڪ مثال ڏيو. اچو ته هڪ شخص 18+ ريٽنگ سان فلم ڏسڻ لاءِ سينيما وڃڻ جو فيصلو ڪري. گارڊ داخل ٿيڻ تي سندس عمر چيڪ ڪري ٿو: جيڪڏهن هو عمر جي حد تائين پهچي ٿو، هو کيس هال ۾ داخل ٿيڻ جي اجازت ڏئي ٿو؛ جيڪڏهن نه، هو کيس گهر موڪلي ٿو. اچو ته هڪ ڪلاس ٺاهيو Man۽ ان سان چيڪ ڪريو if-else:
public class Man {

   private int age;

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

   public int getAge() {
       return age;
   }

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

   public static void main(String[] args) {

       Man man = new Man(22);

       String securityAnswer;

       if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }

       System.out.println(securityAnswer);

   }
}
ڪنسول آئوٽ:

"Все в порядке, проходите!"
جيڪڏهن اسان ان پٽ کي ڪنسول ڏانهن هٽايو، اسان جو امتحان هن طرح نظر اچي ٿو:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
هتي، حقيقت ۾، سادو منطق ڪم ڪري ٿو: هڪ شرط چيڪ ڪيو ويو آهي (عمر > = 18). ان تي مدار رکندي، securityAnswerگارڊ جي جواب سان گڏ ٻن تارن مان ھڪڙو متغير کي لڳايو ويو آھي. اهڙيون حالتون، "هڪ شرط - ٻه ممڪن نتيجا،" پروگرامنگ ۾ اڪثر ڪري ٿي. تنهن ڪري، انهن لاء ساڳيو ٽرينري آپريٽر ٺاهي وئي. ان سان گڏ، اسان اسان جي تصديق کي آسان ڪري سگھون ٿا ڪوڊ جي ھڪڙي لائن تي:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = (man.getAge() >= 18) ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
هي اهو آهي جيڪو هن آپريٽر جو ڪم ڏسڻ جهڙو آهي. ان کي ٽينري (ٽرپل) سڏيو ويندو آهي ڇاڪاڻ ته 3 جزا ان جي ڪم ۾ حصو وٺندا آهن:
  • هڪ شرط ( man.getAge() >= 18)
  • ٻه ممڪن نتيجا ( "اهو ٺيڪ آهي، اڳتي وڌو!" ۽ "هي فلم توهان جي عمر لاءِ مناسب ناهي!" )
پهرين، هڪ شرط ڪوڊ ۾ لکيل آهي، بعد ۾ هڪ سوال جو نشان.
man.getAge() >= 18 ?
"ڇا ان شخص جي عمر 18 سالن کان وڌيڪ يا ان جي برابر آهي؟" هيٺيون پهريون نتيجو آهي. اهو باهه ڏئي ٿو جيڪڏهن حالت واپس اچي ٿي true، اهو آهي، صحيح آهي:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
ڇا ان شخص جي عمر 18 سالن کان وڌيڪ يا ان جي برابر آهي؟ جيڪڏھن ھائو، متغير کي securityAnswer قدر ڏيو ”سڀ ڪجھ ٺيڪ آھي، اندر اچو!“ . ان جي پٺيان " :" آپريٽر، جنهن کان پوء ٻيو نتيجو لکيو ويو آهي. اهو باهه ڏئي ٿو جيڪڏهن حالت واپس اچي ٿي false، اهو آهي، اهو غلط آهي:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
ڇا ان شخص جي عمر 18 سالن کان وڌيڪ يا ان جي برابر آهي؟ جيڪڏھن ھائو، متغير کي securityAnswer قدر ڏيو ”سڀ ڪجھ ٺيڪ آھي، اندر اچو!“ . جيڪڏهن نه، متغير کي securityAnswer قيمت ڏيو "هي فلم توهان جي عمر لاءِ مناسب ناهي!" هي اهو آهي جيڪو ٽرنري آپريٽر جو عام منطق ڏسڻ جهڙو آهي. حالت؟ نتيجو 1: نتيجو 2 ٽرنري آپريٽر - 2رستي ۾، شرط جي چوڌاري قوس لڳائڻ ضروري ناهي: اسان اهو وڌيڪ پڙهڻ جي قابليت لاء ڪيو. اهو ان کان سواء ڪم ڪندو:
public static void main(String[] args) {

   Man man = new Man(22);

   String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";

   System.out.println(securityAnswer);

}
توھان کي ڇا استعمال ڪرڻ گھرجي: if-else, or the ternary operator؟ ڪارڪردگي جي لحاظ کان، اتي تمام گهڻو فرق نه آهي. وڌيڪ صحيح طور تي، اهو موجود ٿي سگهي ٿو، پر اهو غير معمولي آهي. هتي سوال توهان جي ڪوڊ جي پڙهڻ جي قابليت سان لاڳاپيل آهي. اهو پروگرامنگ ۾ تمام ضروري آهي: جيڪو ڪوڊ توهان لکندا آهيو اهو نه صرف صحيح ڪم ڪرڻ گهرجي، پر پڙهڻ ۾ پڻ آسان آهي. آخرڪار، اهو ٿي سگهي ٿو "وراثت" ٻين پروگرامرن ڏانهن، توهان جي ساٿين کي! ۽ جيڪڏهن اهو سمجهڻ ڏکيو آهي، اهو انهن جي ڪم ۽ توهان جي ڪم کي پيچيده ڪندو - اهي هر 5 منٽن تي وضاحت لاء توهان ڏانهن ويندا. هڪ عام سفارش هن طرح ٿي سگهي ٿي: جيڪڏهن حالت سادي ۽ جانچڻ ۾ آسان آهي، توهان بغير ڪنهن نقصان جي ٽرنري آپريٽر استعمال ڪري سگهو ٿا. اهو طريقو توهان ڪوڊ جي مقدار ۽ چيڪن جو تعداد گھٽائي ڇڏيندو if-else، جن مان اڳ ۾ ئي تمام گهڻو ٿي سگھي ٿو. پر جيڪڏهن حالت پيچيده ۽ گھڻ-اسٽيج آهي، اهو استعمال ڪرڻ بهتر آهي if-else. مثال طور، هن معاملي ۾ اهو هڪ خراب خيال ٿيندو ternary آپريٽر استعمال ڪرڻ لاء:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
تنهنڪري توهان فوري طور تي نه سمجهي سگهندا ته هتي ڇا ٿي رهيو آهي! ڪوڊ پڙهڻ تمام ڏکيو ٿي چڪو آهي. ۽ سڀ هڪ ڏکيو حالت جي ڪري:
  • جيڪڏهن ڪو ماڻهو 18 سالن کان مٿي يا ان جي برابر آهي + وٽ ٽڪيٽ آهي (يا مفت داخلا لاءِ ڪوپن آهي) + وٽس ننڍڙا ٻار نه آهن - پوءِ اهي پاس ٿي سگهن ٿا.
  • جيڪڏهن حالت جو گهٽ ۾ گهٽ هڪ حصو غلط موٽائي، پوء اهو نه ٿي سگهي.
اهو آهي جتي اهو واضح طور تي استعمال ڪرڻ بهتر هوندو if-else. ها، اسان جو ڪوڊ سائيز ۾ وڏو هوندو، پر اهو ڪيترائي ڀيرا وڌيڪ پڙهڻ لائق هوندو. ۽ توهان جي ساٿين مان ڪو به پنهنجو سر نه ڇڪيندو جيڪڏهن اهي اهڙي ڪوڊ جي وارث آهن :) آخرڪار، مان توهان کي ڪتاب جي سفارش ڪري سگهان ٿو. ليڪچر ۾ اسان ڪوڊ ريڊيبلٽي جي موضوع تي ڳالهايو. رابرٽ مارٽن پاران کلاسک ڪتاب ”صاف ڪوڊ“ هن لاءِ وقف آهي. ٽرنري آپريٽر - 3ان ۾ پروگرامرز لاءِ بهترين طريقا ۽ سفارشون شامل آهن جيڪي توهان کي لکڻ جي اجازت ڏين ٿيون نه صرف ڪم ڪندڙ، پر ڪوڊ پڙهڻ ۾ پڻ آسان. JavaRush تي هن ڪتاب جو هڪ جائزو آهي .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION