Salam! Şu günki leksiýa gaty uzyn bolmaz, ýöne hökman peýdaly :) Üçünji operator diýilýän zat hakda gürleşeris . “Ternary” “üç” diýmekdir.
if-else
Bu , 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ň Man
we 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 securityAnswer
garawulyň 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!" )
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 theeri 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.
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. Onda 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 .
GO TO FULL VERSION