0Pricing
Java Academy · Lección

La palabra clave yield

Produzca valores desde bloques switch

La palabra clave yield es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.

Cuando una línea no es suficiente

Una rama con flecha como case 1 -> 42; devuelve un valor directamente. Pero ¿qué ocurre si una rama necesita varias instrucciones antes de producir su valor? Ahí es donde entra yield.

La palabra clave yield

Dentro de una rama de bloque { }, la palabra clave yield proporciona el valor que produce la expresión switch. Puede considerarlo como un return, pero para una rama de switch.

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 dentro de un bloque

Puede ejecutar cualquier lógica en el bloque antes de llamar a yield. Lo último que haga el bloque debe ser proporcionar un valor mediante 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);
    }
}

Combinar ramas con flecha y de bloque

Una sola expresión switch puede combinar ramas sencillas con flecha y ramas de bloque que utilizan yield. Utilice la opción que mejor se adapte a cada caso.

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

Calcular antes de yield

Las ramas de bloque son ideales cuando es necesario calcular un valor. Aquí se suman los dígitos antes de proporcionar el total mediante yield.

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 frente a return

yield sale únicamente de la rama de switch y devuelve un valor. return saldría del método completo. Dentro de un bloque de expresión switch, utilice yield.

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 con el estilo antiguo de dos puntos

El switch con estilo de dos puntos también puede ser una expresión si utiliza yield en lugar de break. Cada sección etiquetada proporciona su valor mediante 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);
    }
}

yield condicional

Una rama de bloque puede contener lógica if y proporcionar valores diferentes según el camino de ejecución. Todos los caminos deben proporcionar un valor mediante yield.

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

Devolver objetos mediante yield

yield funciona con cualquier tipo, incluidos los objetos. Aquí una rama construye y proporciona mediante yield un resultado de StringBuilder como String.

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

Consejo de legibilidad

Prefiera las ramas sencillas con flecha cuando baste con un único valor. Utilice un bloque y yield solo cuando una rama necesite realmente instrucciones adicionales. Así mantendrá ordenado el switch.

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

Un ejemplo completo

Veámoslo todo junto: un conversor de estados HTTP que utiliza ramas con flecha y ramas de bloque.

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

Comprobación rápida

Dentro de una rama de expresión switch con varias instrucciones, ¿qué palabra clave proporciona el valor resultante?

Repaso

Ha aprendido la palabra clave yield:

  • yield produce un valor desde una rama de bloque
  • Funciona como return, pero solo para una rama de switch
  • Puede combinar libremente ramas con flecha y de bloque
  • Todos los caminos del código de un bloque deben utilizar yield
  • Utilice bloques solo cuando necesite instrucciones adicionales

Preguntas frecuentes

¿La lección «La palabra clave yield» es gratis?

Sí — el texto completo de «La palabra clave yield» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.

¿Qué aprenderé en «La palabra clave yield»?

Produzca valores desde bloques switch Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Java Academy?

No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «La palabra clave yield»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Java Academy?

Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. switch con flecha
  2. switch como expresión
  3. La palabra clave yield
  4. Casos con varias etiquetas
← Volver a Java Academy