JavaRush /Блоги Java /Random-TG /Оператори сегона дар Java

Оператори сегона дар Java

Дар гурӯҳ нашр шудааст
Салом! Лексияи имрӯза чандон тӯлонӣ нахоҳад буд, аммо бешубҳа муфид хоҳад буд :) Мо дар бораи оператори ба истилоҳ семарӣ сӯҳбат хоҳем кард . Оператори сегона - 1"Тернарӣ" маънои "сегона" -ро дорад. Ин алтернатива ба оператори шартӣ аст 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яке аз ду сатр бо посухи посбон ба тағирёбанда таъин карда мешавад. Чунин ҳолатҳо, "як шарт - ду натиҷаи имконпазир" дар барномасозӣ хеле зуд рух медиҳанд. Аз ин рӯ, барои онҳо ҳамон як оператори сегона сохта шудааст. Бо он, мо метавонем санҷиши худро ба як сатри code содда кунем:
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)
  • Ду натиҷаи имконпазир ( "Хуб аст, ҳаракат кунед!" ва "Ин филм ба синну соли шумо мувофиқ нест!" )
Аввал дар code шарт навишта мешавад ва пас аз он аломати савол гузошта мешавад.
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, ё оператори сегона? Дар робита ба иҷрои он фарқияти зиёд вуҷуд надорад. Аниқтараш, он метавонад вуҷуд дошта бошад, аммо он ночиз аст. Дар ин ҷо савол бештар ба хондани codeи шумо дахл дорад. Ин дар барномасозӣ бениҳоят муҳим аст: рамзи навиштани шумо бояд на танҳо дуруст кор кунад, балки барои хондан осон бошад. Охир, он ба дигар барномасозон, хамкасбони шумо «мерос» шуда метавонад! Ва агар фаҳмидан душвор бошад, ин ҳам кори онҳо ва ҳам кори шуморо мушкил мекунад - онҳо дар ҳар 5 дақиқа ба назди шумо барои шарҳ додан давида меоянд. Тавсияи умумӣ метавонад чунин садо диҳад: агар шарт оддӣ ва осон барои тафтиш бошад, шумо метавонед оператори сегонаро бе зарар истифода баред. Бо ин роҳ шумо миқдори code ва шумораи чекҳоро кам мекунед if-else, ки онҳо аллакай бисёранд. Аммо агар вазъият мураккаб ва бисёрмарҳила бошад, беҳтар аст, ки if-else. Масалан, дар ин ҳолат истифода бурдани оператори сегона фикри бад мебуд:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Пас шумо дарҳол намефаҳмед, ки дар ин ҷо чӣ рӯй дода истодааст! Код хондан хеле душвор шудааст. Ва ҳама аз сабаби як ҳолати душвор:
  • Агар шахсе, ки аз 18-сола боло бошад ё баробар бошад + билет дошта бошад (ё купон барои даромадани ройгон дошта бошад) + бо худ фарзандони хурдсол надошта бошад - пас онҳо метавонанд гузаранд.
  • Агар ақаллан як қисми шарт бардурӯғ баргардад, пас он наметавонад.
Дар ин ҷо истифода бурдани он бешубҳа беҳтар мебуд if-else. Бале, рамзи мо аз рӯи ҳаҷм калонтар мебуд, аммо он чанд маротиба бештар хондан мебуд. Ва ҳеҷ яке аз ҳамкорони шумо, агар онҳо чунин рамзро мерос гиранд, сарашонро намегиранд :) Дар охир метавонам китобро ба шумо тавсия кунам. Дар лекция мо ба мавзуи хониши code дахл кардем. Китоби классикии «Кодекси пок»-и Роберт Мартин ба ӯ бахшида шудааст. Оператори сегона - 3Он таҷрибаҳо ва тавсияҳои беҳтаринро барои барномасозон дар бар мегирад, ки ба шумо имкон медиҳанд, ки на танҳо кор, балки codeи хондан осонро нависед. Баррасии ин китоб дар JavaRush мавҷуд аст.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION