Java Academy · Oppitunti

yield-avainsana

Tuota arvoja switch-lohkoista

Oppitunti 3/413 vaihetta

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:

  • yield tuottaa arvon lohkohaarasta
  • Se vastaa return-komentoa, mutta vaikuttaa vain switch-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
Aloita maksutta

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.

Kaikki tämän kurssin oppitunnit

  1. Nuolityylinen switch
  2. switch lausekkeena
  3. yield-avainsana
  4. Monen tunnisteen tapaukset
← Takaisin: Java Academy