let, also y run con receptores anulables
Use funciones de alcance para ejecutar código solo cuando un valor no sea null.
let, also y run con receptores anulables es una lección gratuita de Kotlin 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 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.
Las funciones de ámbito se combinan con los valores anulables
Las funciones de ámbito let, also y run se combinan muy bien con la llamada segura ?. para ejecutar un bloque solo cuando el receptor no es null.
let con llamada segura
obj?.let { ... } ejecuta el bloque solo si obj no es null; dentro del bloque, it hace referencia al valor no anulable.
fun main() {
val name: String? = "Kotlin"
name?.let {
println("Length: ${it.length}")
println("Upper: ${it.uppercase()}")
}
}let omite el bloque si el valor es null
Si el receptor es null, se omite todo el bloque de let.
fun main() {
val name: String? = null
val result = name?.let {
println("never printed")
it.length
}
println(result) // null
}let devuelve un valor
let devuelve la última expresión de su bloque, por lo que puede encadenarse con Elvis para proporcionar valores predeterminados.
fun main() {
val raw: String? = " hello "
val cleaned = raw?.let { it.trim().uppercase() } ?: "(empty)"
println(cleaned) // HELLO
}also para efectos secundarios
also ejecuta un bloque para sus efectos secundarios y devuelve el receptor original; resulta ideal para registrar información en un pipeline.
fun main() {
val name: String? = "Alice"
val len = name?.also { println("Processing: $it") }?.length
println("len = $len")
}also conserva el valor
A diferencia de let, also devuelve el receptor sin cambios. Úselo cuando quiera inspeccionarlo sin transformarlo.
fun main() {
val items: List<Int>? = listOf(1, 2, 3)
items?.also { println("Got list of size ${it.size}") }
?.forEach { println(it) }
}run con llamada segura
obj?.run { ... } ejecuta el bloque con this asociado al receptor. Úselo cuando quiera acceder a miembros sin el prefijo it..
fun main() {
val name: String? = "Kotlin"
val info = name?.run {
"len=$length upper=${uppercase()}"
}
println(info)
}let frente a run
let utiliza it (el argumento de la lambda); run utiliza this (el receptor). Elija la opción que se lea mejor.
class User(val name: String, val age: Int)
fun main() {
val user: User? = User("Ada", 35)
user?.let { "${it.name} age ${it.age}" }.also(::println)
user?.run { "$name age $age" }.also(::println)
}Encadenar varios ámbitos
Encadene funciones de ámbito a lo largo de un pipeline para transformar y registrar información paso a paso.
fun main() {
val raw: String? = " hello "
val result = raw
?.also { println("raw: '$it'") }
?.let { it.trim() }
?.also { println("trimmed: '$it'") }
?.uppercase()
println(result) // HELLO
}let con takeIf
Combine takeIf (filtro) con let para ejecutar código según un predicado.
fun main() {
val name: String? = "Kotlin"
name?.takeIf { it.length > 3 }
?.let { println("Long name: $it") }
}Antipatrón: if anidados
Antes de las funciones de ámbito:
fun main() {
val name: String? = "Alice"
// OLD WAY:
if (name != null) {
val upper = name.uppercase()
println(upper)
}
// NEW WAY:
name?.let { println(it.uppercase()) }
}Comprobación rápida
¿Qué función de ámbito devuelve el receptor sin cambios y se utiliza principalmente para efectos secundarios?
Repaso
Combine ?. con let (el bloque devuelve un valor y utiliza it), run (el bloque devuelve un valor y utiliza this) o also (devuelve el receptor y se usa para efectos secundarios). Todas omiten la ejecución si el receptor es null.
Aprende Kotlin con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 51
- Lecciones
- 203
Preguntas frecuentes
¿La lección «let, also y run con receptores anulables» es gratis?
Sí — el texto completo de «let, also y run con receptores anulables» 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 «let, also y run con receptores anulables»?
Use funciones de alcance para ejecutar código solo cuando un valor no sea null. 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 3 de 4.
¿Cuánto tiempo toma la lección «let, also y run con receptores anulables»?
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
- Tipos anulables y el modificador ?
- Safe Call ?. y Elvis ?: en código real
- let, also y run con receptores anulables
- Operador !!: cuándo y por qué evitarlo