JavaRush /Java Blog /Random-TK /Java-da üç taraplaýyn operator

Java-da üç taraplaýyn operator

Toparda çap edildi
Salam! Şu günki leksiýa gaty uzyn bolmaz, ýöne hökman peýdaly :) Üçünji operator diýilýän zat hakda gürleşeris . Üçünji operator - 1“Ternary” “üç” diýmekdir. if-elseBu , eýýäm tanyş bolan şertli operatora alternatiwa . Mysal getireliň. Bir adam 18+ reýtingli film görmek üçin kinoteatra gitmek kararyna gelýär diýeliň. Garawul girelgesinde ýaşyny barlaýar: eger ýaş çägine laýyk bolsa, zala girmäge rugsat berýär; ýok bolsa, öýüne iberýär. Geliň, synp döredeliň Manwe ony barlap göreliň 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);

   }
}
Konsol çykyşy:

"Все в порядке, проходите!"
Çykyşy konsola aýyrsak, synagymyz şuňa meňzeýär:
if (man.getAge() >= 18) {
           securityAnswer = "It's all right, come in!";
       } else {
           securityAnswer = "This movie is not suitable for your age!";
       }
Aslynda bu ýerde ýönekeý logika işleýär: bir şert barlanýar (ýaş> = 18). Şoňa baglylykda securityAnswergarawulyň jogaby bilen iki setirden biri üýtgeýjä bellenýär. “Bir şert - iki mümkin netije” ýaly ýagdaýlar programmirlemekde köplenç ýüze çykýar. Şonuň üçin olar üçin şol bir üç taraplaýyn operator döredildi. Onuň kömegi bilen, barlamagy bir setir kody bilen aňsatlaşdyryp bileris:
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);

}
Bu operatoryň işi şu. Üçünji (üçlük) diýilýär, sebäbi onuň işine 3 komponent gatnaşýar:
  • Bir şert ( man.getAge() >= 18)
  • Iki mümkin netije ( "Bolýar, dowam ediň!" We "Bu film siziň ýaşyňyza laýyk däl!" )
Ilki bilen şert kodda ýazylýar, soň bolsa sorag belgisi ýazylýar.
man.getAge() >= 18 ?
"Adamyň ýaşy 18-den ulymy ýa-da deňmi?" Aşakdaky netije. Returnagdaý gaýdyp gelse ýanýar true, ýagny hakykat:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!"
Adamyň ýaşy 18-den ulymy ýa-da deňmi? Hawa bolsa, üýtgeýjini “Hemme zat gowy, giriň!”securityAnswer Bahasyny belläň. . :Ondan soň ikinji netije ýazylan “ ” operator. Returnagdaý gaýdyp gelse ýanýar false, ýagny ýalan:
String securityAnswer = man.getAge() >= 18 ? "It's all right, come in!" : "This movie is not suitable for your age!";
Adamyň ýaşy 18-den ulymy ýa-da deňmi? Hawa bolsa, üýtgeýjini “Hemme zat gowy, giriň!”securityAnswer Bahasyny belläň. . Notok bolsa, üýtgeýjini “Bu film siziň ýaşyňyza laýyk däl!”securityAnswer Bahasyny belläň. Üçünji operatoryň umumy logikasy şu. ýagdaý? netije 1: netije 2 Üçünji operator - 2theeri gelende aýtsak, gabygyň şertini goýmak hökman däl: muny has köp okamak üçin etdik. Olar bolmasa işlär:
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);

}
Näme ulanmaly: if-elseýa-da üç taraplaýyn operator? Öndürijilik taýdan kän bir tapawut ýok. Has takygy, bar bolmagy mümkin, ýöne ähmiýetsiz. Bu ýerde sorag koduňyzyň okalmagy bilen baglanyşykly. Programmirlemekde diýseň möhümdir: ýazýan koduňyz diňe bir dogry işlemeli däl, okamak hem aňsat bolmaly. Galyberse-de, beýleki programmistlere, kärdeşleriňize “miras” bolup biler! Düşünmek kyn bolsa, bu olaryň işini we işini kynlaşdyrar - her 5 minutdan düşündiriş almak üçin size ylgaýarlar. Umumy maslahat şeýle bolup biler: şert ýönekeý we barlamak aňsat bolsa, üç taraplaýyn operatory zyýansyz ulanyp bilersiňiz. Şeýlelik bilen, koduň mukdaryny we çekleriň sanyny azaldyp bilersiňiz if-else, olardan eýýäm köp bolmagy mümkin. Theöne şert çylşyrymly we köp basgançakly bolsa, ulanmak has gowudyr if-else. Mysal üçin, bu ýagdaýda üç taraplaýyn operatory ulanmak erbet pikir bolar:
String securityAnswer = (man.getAge() >= 18 && (man.hasTicket() || man.hasCoupon()) && !man.hasChild())  ? "Come in!" : "You can not pass!";
Şonuň üçin bu ýerde näme bolýandygyna derrew düşünmersiňiz! Kod okamak gaty kynlaşdy. Hemmesi kyn ýagdaý sebäpli:
  • Bir adam 18 ýaşdan uly ýa-da deň bolsa + bileti bar (ýa-da mugt giriş üçin talony bar) + ýanynda kiçi çagalary ýok bolsa, geçip bilerler.
  • Theagdaýyň iň bolmanda bir bölegi ýalňyş gaýdyp gelse, başarmaz.
Bu ýerde ulanmak has gowy bolardy if-else. Hawa, kodumyz has uly bolardy, ýöne has köp okaljakdy. Kärdeşleriňiziň hiç biri şeýle kody miras alsa, kellesini gysmaz :) Ahyrynda size kitaby maslahat berip bilerin. Leksiýada kod okalmagy mowzugyna degdik. Robert Martin tarapyndan döredilen “Arassa kod” kitaby oňa bagyşlanýar. Üçünji operator - 3Onda diňe bir işlemek bilen çäklenmän, kod okamak hem aňsat bolan programmistler üçin iň oňat tejribe we teklipler bar. JavaRush-da bu kitaba syn bar .
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION