CodeGym /Java Blog /Random /Operator ng Ternary
John Squirrels
Antas
San Francisco

Operator ng Ternary

Nai-publish sa grupo
Hi! Ang aralin ngayon ay hindi masyadong mahaba, ngunit tiyak na magiging kapaki-pakinabang ito :) Pag-uusapan natin ang tinatawag na ternary operator . Operator ng Ternary - 1Ang ibig sabihin ng Ternary ay " binubuo ng tatlong bahagi ". Ito ay isang alternatibo sa if-elsecontrol flow statement na nakilala mo na. Magbigay tayo ng halimbawa. Ipagpalagay na may nagpasya na pumunta sa isang R-rated na pelikula (sa ilalim ng 17 ay nangangailangan ng kasamang magulang o nasa hustong gulang na tagapag-alaga). Sinusuri ng usher ang kanyang edad sa pintuan: kung pumasa siya sa pagsusuri ng edad, pinapayagan siyang pumasok; kung hindi, pinauwi siya. Magdeklara tayo ng isang Personklase at suriin ito gamit ang isang if-elsepahayag:

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);

   }
}
Output ng console:

"Everything is in order. Come in!"
Kung aalisin namin ang output ng console, magiging ganito ang aming tseke:

if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }
Ang lohika ay napaka-simple dito: ang isang kundisyon ay nasuri (edad >= 18) Batay sa resulta, ang variable usherResponseay itinalaga ng isa sa dalawang string na may tugon ng usher. Ang mga ganitong sitwasyon ("isang kundisyon - dalawang posibleng resulta") ay lubhang karaniwan sa programming. At iyon ang dahilan kung bakit nilikha ang ternary operator. Magagamit namin ito upang gawing simple ang aming tseke sa isang linya ng code:

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);

}
Narito kung paano gumagana ang operator na ito. Tinatawag itong ternary operator, dahil kinabibilangan ito ng 3 sangkap:
  • Isang kondisyon ( person.getAge() > 18)
  • Dalawang posibleng resulta ( "Lahat ay nasa ayos. Halika!" at "Ang pelikulang ito ay hindi angkop sa iyong edad!" )
Una, isinusulat namin ang kundisyon, na sinusundan ng isang tandang pananong.

person.getAge() > 18 ?
"Higit ba sa 18 ang edad ng taong ito?" Pagkatapos ay isulat namin ang unang halaga . Ang halagang ito ay ginagamit kung ang kundisyon ay nagsusuri satrue :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
Ang edad ba ng taong ito ay higit sa 18? Kung oo, itakda ang usherResponse variable sa "Everything is in order. Come in!" Susunod ay ang " :" simbolo at ang pangalawang halaga . Ang halagang ito ay ginagamit kung ang kundisyon ay nagsusuri safalse :

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
Ang edad ba ng taong ito ay higit sa 18? Kung oo, itakda ang usherResponse variable sa "Everything is in order. Come in!" . Kung hindi, itakda ang usherResponse variable sa "Ang pelikulang ito ay hindi angkop para sa iyong edad!" Sa pangkalahatan, narito ang hitsura ng lohika ng ternary operator. kundisyon ? kinalabasan 1 : kinalabasan 2 Operator ng Ternary - 2 Siyanga pala, ang mga panaklong sa paligid ng kundisyon ay hindi kinakailangan: idinagdag namin ang mga ito para sa mas madaling mabasa. Gumagana rin ito nang wala sila:

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);

}
Kaya ano ang dapat mong gamitin? Isang if-elsepahayag o ang ternary operator? Sa mga tuntunin ng pagganap, walang pagkakaiba. Sa mas tumpak, marahil mayroon, ngunit ito ay hindi gaanong mahalaga. Ang pinakamalaking pagsasaalang-alang dito ay ang pagiging madaling mabasa ng iyong code. Ang code na iyong isusulat ay hindi lamang dapat gumana nang tama, ngunit maging madaling basahin . Pagkatapos ng lahat, maaaring ito ay "manahin" ng ibang mga programmer, ang iyong mga kasamahan! Kung mahirap intindihin, magiging kumplikado ang kanilang trabaho, at ang sa iyo (lalapit sila sa iyo para sa mga paliwanag tuwing 5 minuto). Ang pangkalahatang rekomendasyon ay ito: kung ang kundisyon ay simple at madaling ma-verify, maaari mong gamitin ang ternary operator nang walang pinsala. Hinahayaan ka nitong bawasan ang dami ng code at ang bilang ngif-elsemga pahayag (at maaaring marami na sa kanila). Ngunit kung ang kundisyon ay kumplikado at nagsasangkot ng maraming hakbang, mas mabuting gumamit ng if-elsepahayag. Halimbawa, ang paggamit ng ternary operator ay isang masamang ideya sa kasong ito:

String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
Hindi agad maliwanag ang nangyayari dito! Ang code ay naging napakahirap basahin. At lahat dahil sa kumplikadong kondisyon:
  • Kung ang isang tao ay mas matanda sa 18, may tiket (o isang libreng pass), at walang maliliit na anak, maaari siyang pumasok.
  • Kung kahit isang bahagi ng kundisyon ay mali, hindi niya magagawa.
Narito ito ay malinaw na mas mahusay na gamitin if-else. Oo, ang aming code ay magiging mas malaki, ngunit ito ay magiging mas nababasa. At ang iyong mga kasamahan ay hindi makakaharap kung mamanahin nila ang code na ito :) Sa wakas, maaari akong magrekomenda ng mabuti para sa iyo. Napansin namin ang pagiging madaling mabasa ng code sa panahon ng aralin. Ang aklat ni Robert Martin na "Clean Code", na naging isang klasiko, ay nakatuon sa paksang ito. Operator ng Ternary - 4Pinagsasama-sama nito ang pinakamahuhusay na kagawian at rekomendasyon para sa mga programmer, na tutulong sa iyo na magsulat ng code na hindi lamang gumagana, ngunit madaling mabasa.
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION