yield-avainsana
Tuota arvoja switch-lohkoista
yield-avainsana on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 4 oppituntia.
Kun yksi rivi ei riitä
Nuolihaara, kuten case 1 -> 42;, palauttaa arvon suoraan. Mutta mitä tehdään, jos haara tarvitsee useita lauseita ennen arvon tuottamista? Silloin tarvitaan yield-avainsanaa.
yield-avainsana
Lohkohaarassa { } yield-avainsana antaa arvon, jonka switch-lauseke tuottaa. Ajatelkaa sitä return-komennon kaltaisena, mutta switch-haaraa varten.
public class Main {
public static void main(String[] args) {
int n = 3;
int result = switch (n) {
case 3 -> {
int squared = n * n;
yield squared;
}
default -> 0;
};
System.out.println(result);
}
}yield lohkon sisällä
Voitte suorittaa lohkossa mitä tahansa logiikkaa ennen yield-komennon kutsumista. Lohkon viimeisen toiminnon tulisi olla arvon tuottaminen komennolla yield.
public class Main {
public static void main(String[] args) {
int amount = 250;
String label = switch (amount / 100) {
case 0 -> "small";
default -> {
System.out.println("Computing label...");
yield "large";
}
};
System.out.println(label);
}
}Nuoli- ja lohkohaarojen yhdistäminen
Yhdessä switch-lausekkeessa voi yhdistää yksinkertaisia nuolihaaroja ja yield-komentoa käyttäviä lohkohaaroja. Käyttäkää kussakin casessa tarkoitukseen sopivinta muotoa.
public class Main {
public static void main(String[] args) {
int code = 2;
String msg = switch (code) {
case 1 -> "One";
case 2 -> {
String s = "T" + "wo";
yield s;
}
default -> "Other";
};
System.out.println(msg);
}
}Laskenta ennen yield-komentoa
Lohkohaarat sopivat erinomaisesti tilanteisiin, joissa arvo täytyy laskea. Tässä laskemme numeroiden summan ennen kokonaismäärän tuottamista.
public class Main {
public static void main(String[] args) {
int category = 1;
int value = switch (category) {
case 1 -> {
int sum = 0;
for (int i = 1; i <= 5; i++) {
sum += i;
}
yield sum;
}
default -> 0;
};
System.out.println(value);
}
}yield ja return
yield poistuu vain switch-haarasta ja antaa arvon takaisin. return poistuisi koko metodista. Käyttäkää switch-lausekkeen lohkossa yield-komentoa.
public class Main {
static int classify(int n) {
int rank = switch (n) {
case 0 -> 0;
default -> {
yield (n > 0) ? 1 : -1;
}
};
return rank;
}
public static void main(String[] args) {
System.out.println(classify(-7));
}
}yield vanhassa kaksoispistetyylissä
Kaksoispistetyylinen switch voi myös olla lauseke, jossa käytetään yield-komentoa break-komennon sijaan. Kukin merkitty osio tuottaa oman arvonsa komennolla yield.
public class Main {
public static void main(String[] args) {
int day = 2;
String name = switch (day) {
case 1: yield "Mon";
case 2: yield "Tue";
default: yield "Other";
};
System.out.println(name);
}
}Ehdollinen yield
Lohkohaara voi sisältää if-logiikkaa ja tuottaa eri arvoja eri suorituspoluilla. Jokaisen polun on tuotettava arvo.
public class Main {
public static void main(String[] args) {
int temp = 30;
String advice = switch (temp / 10) {
case 3 -> {
if (temp > 35) {
yield "Very hot";
}
yield "Warm";
}
default -> "Mild";
};
System.out.println(advice);
}
}Objektien tuottaminen
yield toimii minkä tahansa tyypin kanssa, myös objektien. Tässä haara muodostaa StringBuilder-tuloksen ja tuottaa sen String-tyyppisenä.
public class Main {
public static void main(String[] args) {
int count = 3;
String stars = switch (count) {
case 0 -> "";
default -> {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < count; i++) {
sb.append("*");
}
yield sb.toString();
}
};
System.out.println(stars);
}
}Luettavuusvinkki
Suosikaa yksinkertaisia nuolihaaroja, kun yksi arvo riittää. Käyttäkää lohkoa ja yield-komentoa vain silloin, kun haara todella tarvitsee lisälauseita. Näin switch pysyy siistinä.
public class Main {
public static void main(String[] args) {
int level = 2;
int xp = switch (level) {
case 1 -> 100;
case 2 -> {
int base = 100;
yield base * 2;
}
default -> 0;
};
System.out.println(xp);
}
}Täydellinen esimerkki
Kootaan kaikki yhteen: HTTP-tyylinen tilakoodien muunnin, joka käyttää sekä nuoli- että lohkohaaroja.
public class Main {
public static void main(String[] args) {
int status = 404;
String message = switch (status / 100) {
case 2 -> "Success";
case 4 -> {
String base = "Client error ";
yield base + status;
}
case 5 -> "Server error";
default -> "Unknown";
};
System.out.println(message);
}
}Pikatarkistus
Mikä avainsana tuottaa tuloksena olevan arvon usean lauseen sisältävässä switch-lausekkeen haarassa?
Kertaus
Opitte yield-avainsanan:
yieldtuottaa arvon lohkohaarasta- Se vastaa
return-komentoa, mutta vaikuttaa vainswitch-haaraan - Nuoli- ja lohkohaaroja voi yhdistää vapaasti
- Jokaisen lohkon suorituspolun on käytettävä
yield-komentoa - Käyttäkää lohkoja vain silloin, kun lisälauseita tarvitaan
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”yield-avainsana” ilmainen?
Kyllä – oppitunnin ”yield-avainsana” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”yield-avainsana”?
Tuota arvoja switch-lohkoista Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”yield-avainsana”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.