when como expresión
Devuelva valores desde when
when como expresión es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 1 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 Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.
when como expresión
El when de Kotlin es más que una sentencia switch. Es una expresión, lo que significa que produce un valor que puede asignar o devolver.
Esto hace que la lógica de ramificación sea concisa y legible.
Devolver un valor
Cuando se usa como expresión, cada rama proporciona un resultado. El valor de la rama coincidente se convierte en el resultado de todo el when.
fun main() {
val day = 3
val name = when (day) {
1 -> "Monday"
2 -> "Tuesday"
3 -> "Wednesday"
else -> "Other"
}
println(name)
}else es obligatorio
Cuando se usa como expresión, when debe ser exhaustivo. Para valores arbitrarios, esto significa incluir una rama else.
Sin ella, el compilador no puede garantizar que se produzca un valor.
fun grade(score: Int): String = when {
score >= 90 -> "A"
score >= 80 -> "B"
else -> "C"
}
fun main() {
println(grade(85))
}Varios valores por rama
Separe varios valores con comas para que compartan una rama.
Esto es más limpio que repetir el mismo cuerpo.
fun main() {
val day = 6
val type = when (day) {
1, 2, 3, 4, 5 -> "Weekday"
6, 7 -> "Weekend"
else -> "Invalid"
}
println(type)
}when sin argumento
Omita el sujeto y cada rama se convertirá en una condición booleana.
Esto sustituye una cadena de if/else if por un bloque ordenado.
fun main() {
val temp = 18
val feel = when {
temp < 0 -> "Freezing"
temp < 15 -> "Cold"
temp < 25 -> "Mild"
else -> "Hot"
}
println(feel)
}Rangos en las ramas
Las ramas pueden comprobar rangos con in.
Esto permite expresar intervalos numéricos de forma muy natural.
fun main() {
val score = 73
val band = when (score) {
in 0..59 -> "Fail"
in 60..79 -> "Pass"
in 80..100 -> "Excellent"
else -> "Invalid"
}
println(band)
}Comprobaciones de tipos en las ramas
Las ramas pueden comprobar tipos con is.
El resultado de cada rama puede ser diferente, y when devuelve el tipo común.
fun describe(x: Any): String = when (x) {
is Int -> "Integer"
is String -> "Text"
else -> "Unknown"
}
fun main() {
println(describe(42))
println(describe("hi"))
}Bloques de rama
Una rama puede ser un bloque con varias instrucciones. La última expresión del bloque es su valor.
fun main() {
val n = 5
val result = when {
n > 0 -> {
val doubled = n * 2
"Positive, doubled is " + doubled
}
else -> "Non-positive"
}
println(result)
}Devolver when directamente
Una función puede devolver directamente una expresión when mediante un cuerpo de una sola expresión.
Este es un estilo de Kotlin muy habitual y limpio.
fun sign(n: Int): String = when {
n > 0 -> "positive"
n < 0 -> "negative"
else -> "zero"
}
fun main() {
println(sign(-4))
}Capturar el sujeto
Puede declarar el sujeto dentro de when para que esté disponible en las ramas.
Así mantiene una variable temporal dentro de un ámbito reducido.
fun describeLength(text: String): String = when (val len = text.length) {
0 -> "empty"
in 1..5 -> "short (" + len + ")"
else -> "long (" + len + ")"
}
fun main() {
println(describeLength("hello"))
}Integración
Como expresión, when es un potente productor de valores:
- Cada rama proporciona un resultado
elsehace que sea exhaustivo- Admite comas, rangos, tipos y bloques
fun ticketPrice(age: Int): Int = when {
age < 6 -> 0
age < 18 -> 10
age >= 65 -> 8
else -> 15
}
fun main() {
println(ticketPrice(4))
println(ticketPrice(70))
}Comprobación rápida
Ponga a prueba su comprensión de when como expresión.
Repaso
Ha aprendido a usar when como expresión:
- Devuelve el valor de la rama coincidente
- Necesita
elsepara ser exhaustivo - Admite comas, rangos, comprobaciones de tipos y bloques
A continuación, verá cómo los smart casts permiten al compilador reducir los tipos automáticamente.
Preguntas frecuentes
¿La lección «when como expresión» es gratis?
Sí — el texto completo de «when como expresión» 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 Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.
¿Qué aprenderé en «when como expresión»?
Devuelva valores desde when Practicas Kotlin 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 Kotlin Academy?
No se requiere experiencia previa. Kotlin 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 1 de 4.
¿Cuánto tiempo toma la lección «when como expresión»?
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 Kotlin Academy?
Sí. Cada lección de Kotlin 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
- when como expresión
- Smart casts
- Operadores is y as
- when exhaustivo