Hola tratando de comprender un poco mejor la sintaxis de la Lambda realicé este ejemplo:

¿Qué son las Lambdas y cómo se crean?
Las lambdas, también conocidas como funciones anónimas, son una característica poderosa en Kotlin. La gran ventaja es que, al igual que las funciones normales, son objetos que pueden ser asignados a variables. ¿Recuerdas cuando mencionamos que las funciones en Kotlin podrían tratarse como objetos y asignarse a variables? Aquí exploraremos cómo crearlas y utilizarlas de manera eficiente.
Para crear una lambda, imaginemos que tenemos una cajita cerrada (la lambda), y cuando la abrimos, obtenemos un valor. Al crearlas, indicamos el tipo de retorno. Un ejemplo sencillo es una lambda que acepta un String y devuelve un Int. El código para esto se vería así:
val myLambda: (String) -> Int = { it.length }
En este ejemplo, it representa el parámetro que la lambda recibe. Es importante notar que it es el valor por defecto asignado al parámetro en una lambda. Para crear un código más legible, se recomienda usar nombres explícitos para los parámetros cuando sea posible.
¿Cómo ejecutamos una Lambda?
Para ejecutar la lambda anteriormente definida, simplemente agregamos paréntesis y pasamos el parámetro requerido. Esto invoca a la lambda:
val result = myLambda("Hola Platzi") println(result) // Esto imprimirá: 12
El proceso es similar a abrir la cajita y obtener el valor interno. En este caso, al pasar el String "Hola Platzi", la lambda calcula su longitud.
¿Cómo utilizamos Lambdas en listas y operaciones?
Una de las múltiples utilidades de las lambdas es su capacidad para ser pasadas como parámetros a otras funciones, como map. Recordemos una lista de saludos y calculemos la longitud de cada uno:
val saludos = listOf("Hello", "Hola", "Chao") val longitudDeSaludos = saludos.map(myLambda) println(longitudDeSaludos) // Imprime: [5, 4, 4]
Aquí, map toma cada elemento de la lista, ejecuta la lambda con ese elemento, y almacena los resultados en una nueva lista. Esto permite realizar operaciones complejas de manera eficiente y elegante, evitando repetir código innecesariamente.
Las Lambdas como parámetros
Al usar lambdas como parámetros en funciones como map, aprovechamos su capacidad para funcionar dentro de otras operaciones. Esto mejora la legibilidad y eficiencia del código, simplificando procesos repetitivos y avanzados en programación funcional.
En resumen, las lambdas son herramientas esenciales en el desarrollo con Kotlin, permitiendo a los desarrolladores construir código conciso y reutilizable. Te animamos a experimentar con ellas en tus propios proyectos para ver el impacto positivo que pueden tener en tu flujo de trabajo.
Las lambdas, también conocidas como funciones anónimas, son una característica poderosa en Kotlin. La gran ventaja es que, al igual que las funciones normales, son objetos que pueden ser asignados a variables. ¿Recuerdas cuando mencionamos que las funciones en Kotlin podrían tratarse como objetos y asignarse a variables? Aquí exploraremos cómo crearlas y utilizarlas de manera eficiente.
Para crear una lambda, imaginemos que tenemos una cajita cerrada (la lambda), y cuando la abrimos, obtenemos un valor. Al crearlas, indicamos el tipo de retorno. Un ejemplo sencillo es una lambda que acepta un String y devuelve un Int. El código para esto se vería así:
val myLambda: (String) -> Int = { it.length }
En este ejemplo, it representa el parámetro que la lambda recibe. Es importante notar que it es el valor por defecto asignado al parámetro en una lambda. Para crear un código más legible, se recomienda usar nombres explícitos para los parámetros cuando sea posible.
Para ejecutar la lambda anteriormente definida, simplemente agregamos paréntesis y pasamos el parámetro requerido. Esto invoca a la lambda:
val result = myLambda("Hola Platzi")
println(result) // Esto imprimirá: 12
El proceso es similar a abrir la cajita y obtener el valor interno. En este caso, al pasar el String "Hola Platzi", la lambda calcula su longitud.
Una de las múltiples utilidades de las lambdas es su capacidad para ser pasadas como parámetros a otras funciones, como map. Recordemos una lista de saludos y calculemos la longitud de cada uno:
val saludos = listOf("Hello", "Hola", "Chao")
val longitudDeSaludos = saludos.map(myLambda)
println(longitudDeSaludos) // Imprime: [5, 4, 4]
Aquí, map toma cada elemento de la lista, ejecuta la lambda con ese elemento, y almacena los resultados en una nueva lista. Esto permite realizar operaciones complejas de manera eficiente y elegante, evitando repetir código innecesariamente.
Al usar lambdas como parámetros en funciones como map, aprovechamos su capacidad para funcionar dentro de otras operaciones. Esto mejora la legibilidad y eficiencia del código, simplificando procesos repetitivos y avanzados en programación funcional.
En resumen, las lambdas son herramientas esenciales en el desarrollo con Kotlin, permitiendo a los desarrolladores construir código conciso y reutilizable. Te animamos a experimentar con ellas en tus propios proyectos para ver el impacto positivo que pueden tener en tu flujo de trabajo.
Hola tratando de comprender un poco mejor la sintaxis de la Lambda realicé este ejemplo:

Aunque no tiene que ver con Kotlin, pero si están aquí por la carrera de Android es muy recomendable ver el curso de Programación funcional con Java. https://platzi.com/clases/java-funcional/
Código de la clase :)
fun main(args:Array<String>){
val myLambda : (String) -> Int = {
//it es el parametro que estamos pasando
valor -> valor.length
}
val lambdaEjecutar = myLambda("David")
println(lambdaEjecutar)
val saludos = listOf("Hola","Ciao")
val longitudSaludos = saludos.map(myLambda)
println(longitudSaludos)
}
Lambdas: Las conocemos en otros lenguajes como funciones anónimas o funciones literales
Funciones anónimas: lo declaramos una función que no tiene nombre Una lambda es tan solo una forma de escribir una función, más simplificada


Ejemplos de declaración de Lambdas:
//Una lambda con tipos explícitos en todas partes. La lambda es la parte entre llaves, que se asigna a una variable de tipo (String) -> String (un tipo de función)
val upperCase1: (String) ->String={str: String -> str.uppercase()}
//Inferencia de tipo dentro de lambda: el tipo del parámetro lambda se infiere del tipo de variable a la que está asignado.
val upperCase2: (String) -> String = {str -> str.uppercase()}
//Inferencia de tipo fuera de lambda: el tipo de variable se infiere del tipo del parámetro lambda y el valor de retorno.
val upperCase3 = {str: String -> str.uppercase()}
//No puede hacer ambas cosas a la vez, el compilador no tiene la posibilidad de inferir el tipo de esa manera.
//val upperCase4: {str -> str.uppercase()}
//Para lambdas con un solo parámetro, no tiene que nombrarlo explícitamente. En su lugar, puede utilizar la variable it implícita. Esto es especialmente útil cuando se puede inferir el tipo (que suele ser el caso).
val upperCase5: (String) -> String = {it.uppercase()}
//Si su lambda consta de una única llamada de función, puede usar punteros de función (: :).
val upperCase6: (String) -> String = String::uppercase
println(upperCase1("hello"))
println(upperCase2("hello"))
println(upperCase3("hello"))
println(upperCase5("hello"))
println(upperCase6("hello"))
Salida:

El uso de lambdas es muy util para operar listas en un map y no reptir el contenido de la operación.
Ejemplo:
fun main(args: Array<String>) {
// declaración de lambda
val myLambda: (String) -> Int = {
valor -> valor.length
}
// invocar lambda y ejecutar.
val lambdaEjecutado: Int = myLambda('hola platzi')
println(lambdaEjecutado)
// utilizar la lambda, esto es muy util cuando quieres hacer una operación en diferentes listas, para no estar repitiendo código.
val saludos = ListOf('Hello', 'Hola', 'Ciao')
val longitudDeSaludos = saludos.map(myLambda)
}
Lambdas Las Lambdas son una expresion que hace una funcion y decimos que no tiene nombre. {println("Hola Mundo")} var hola = {println("Hola Mundo")} hola()
Estoy algo confundida. en el minuto 4:45 el profe usa un .map En este caso estaríamos usando un mapa? o qué uso tiene Soy nueva programando y se me ha hecho difícil entender esta clase.
Las funciones lambda ("lambdas") son una forma sencilla de crear funciones ad-hoc (para un fin determinado). Las lambdas se pueden denotar de forma muy concisa en muchos casos gracias a la inferencia de tipos y la variable it implícita.
Me parece favorable el uso de lambdas cuando queremos crear una función corta que haga alguna modificación en una lista, entero o string pasado. Con esto nos ahorramos tiempo de crear todo el cuerpo de una función tradicional.
Vanesa Percy
Guillermo Martínez
Guillermo Martínez
Usuario anónimo
UserVanesa Percy
Manuel Alejandro Hermoso
FABRIZIO VITORINO MONJARAS
Silvana Rolón
Oscar Gutiérrez
Cristian Lotero Aquino
Vanesa Percy
Julio Gutierrez
Company_adminCarlos Ivan Garcia Fougerat
Laura Roa
Francisco Ponce
Giuseppe Vetri
ProfesorVanesa Percy
Fernando Romero
Mariano Gobea Alcoba
Cristian David Restrepo Marin
Ana Maria Velasquez Gonzalez
William Schnaider Torres Bermon
Alvaro Huaysara Jauregui
Miguel Cobas
julio cesar valadez castañeda
Kevin Parra Lopez
Juan Bautista
Manuel Alejandro Hermoso
Sebastian Tuquerrez
Hola tratando de comprender un poco mejor la sintaxis de la Lambda realicé este ejemplo:
Creo que otra cosa que te puede ayudar a entenderlas mejor, es que las lambdas las puedes ver como funciones cortas anónimas (sin nombre) que se declaran de forma diferente.
Por cierto me gusto tu esquema , facilita entender las partes del lambda :D.
Aunque no tiene que ver con Kotlin, pero si están aquí por la carrera de Android es muy recomendable ver el curso de Programación funcional con Java. https://platzi.com/clases/java-funcional/
Código de la clase :)
fun main(args:Array<String>){ val myLambda : (String) -> Int = { //it es el parametro que estamos pasando valor -> valor.length } val lambdaEjecutar = myLambda("David") println(lambdaEjecutar) val saludos = listOf("Hola","Ciao") val longitudSaludos = saludos.map(myLambda) println(longitudSaludos) }
Tienes razón ese curso es importante verlo, saber cómo trabaja la programación funcional. Tal vez sea recomendable verlo antes de hacer este de Kotlin. Por ejemplo en mi caso es primera vez que veo este concepto de Lambda y la verdad que al principio uno se pierde un poco.
Gracias por el aporte.
Gracias me lo voy a mirar
Lambdas: Las conocemos en otros lenguajes como funciones anónimas o funciones literales
Funciones anónimas: lo declaramos una función que no tiene nombre Una lambda es tan solo una forma de escribir una función, más simplificada
Muy buena explicación, la verdad entendí mejor el concepto de lambdas
muchas gracias por el aporte!! muchos tips nuevos tambien!!
Ejemplos de declaración de Lambdas:
//Una lambda con tipos explícitos en todas partes. La lambda es la parte entre llaves, que se asigna a una variable de tipo (String) -> String (un tipo de función) val upperCase1: (String) ->String={str: String -> str.uppercase()} //Inferencia de tipo dentro de lambda: el tipo del parámetro lambda se infiere del tipo de variable a la que está asignado. val upperCase2: (String) -> String = {str -> str.uppercase()} //Inferencia de tipo fuera de lambda: el tipo de variable se infiere del tipo del parámetro lambda y el valor de retorno. val upperCase3 = {str: String -> str.uppercase()} //No puede hacer ambas cosas a la vez, el compilador no tiene la posibilidad de inferir el tipo de esa manera. //val upperCase4: {str -> str.uppercase()} //Para lambdas con un solo parámetro, no tiene que nombrarlo explícitamente. En su lugar, puede utilizar la variable it implícita. Esto es especialmente útil cuando se puede inferir el tipo (que suele ser el caso). val upperCase5: (String) -> String = {it.uppercase()} //Si su lambda consta de una única llamada de función, puede usar punteros de función (: :). val upperCase6: (String) -> String = String::uppercase println(upperCase1("hello")) println(upperCase2("hello")) println(upperCase3("hello")) println(upperCase5("hello")) println(upperCase6("hello"))
Salida:
El uso de lambdas es muy util para operar listas en un map y no reptir el contenido de la operación.
Ejemplo:
fun main(args: Array<String>) { // declaración de lambda val myLambda: (String) -> Int = { valor -> valor.length } // invocar lambda y ejecutar. val lambdaEjecutado: Int = myLambda('hola platzi') println(lambdaEjecutado) // utilizar la lambda, esto es muy util cuando quieres hacer una operación en diferentes listas, para no estar repitiendo código. val saludos = ListOf('Hello', 'Hola', 'Ciao') val longitudDeSaludos = saludos.map(myLambda) }
Lambdas Las Lambdas son una expresion que hace una funcion y decimos que no tiene nombre. {println("Hola Mundo")} var hola = {println("Hola Mundo")} hola()
Estoy algo confundida. en el minuto 4:45 el profe usa un .map En este caso estaríamos usando un mapa? o qué uso tiene Soy nueva programando y se me ha hecho difícil entender esta clase.
Hola Lau
Un map, en algunos lenguajes de programación es hacer un recorrido de los elementos, en este caso es igual recorrer elementos para ejecutar alguna función adicional.
Hola laualexandrar, la función map es distinta a utilizar un Map en otros lenguajes. La función map es una función que te permite recorrer una lista de elementos e ir ejecutando una función que puede convertir un tipo de dato en otro tipo de dato. Por ejemplo, convertir una cadena de texto a un entero. Entonces convertirias una lista de cadenas de texto a una de numeros enteros :)
Las funciones lambda ("lambdas") son una forma sencilla de crear funciones ad-hoc (para un fin determinado). Las lambdas se pueden denotar de forma muy concisa en muchos casos gracias a la inferencia de tipos y la variable it implícita.
Me parece favorable el uso de lambdas cuando queremos crear una función corta que haga alguna modificación en una lista, entero o string pasado. Con esto nos ahorramos tiempo de crear todo el cuerpo de una función tradicional.
Una cuestión sintactica no menor, a mi entender, es que las lambdas no son pasadas o usadas como "parametro" sino que son pasadas o usadas como "argumento".
La diferencia radica en que parametro es la variable definida en una declaración de función mientras que argumento es el valor realmente pasado cuando se llama a esta función. Así es que:
package parametrosYArgumentos fun main() { imprimirNombre(nombre = "Mariano", segundoNombre = "Daniel", apellido = "Gobea") // Argumentos } fun imprimirNombre (nombre: String, segundoNombre: String = "", apellido: String) { // Parametros println("Mi nombre completo es $nombre $segundoNombre $apellido") }
Espero sirva a la aclaración y que lo corrijan en el curso. Gracias!
val MyLambda : (String) -> Int = {valor -> valor.length } val lambdaEjecutada: Int = MyLambda("hola") println(MyLambda) val saludos = listOf("Hello","Hola","Ciao") val longitudSaludos = saludos.map(MyLambda)
¿Que alcance tiene una función lamda?
En Kotlin, una función lambda es una función anónima que se puede usar como un valor y se puede pasar como argumento a otras funciones. El alcance de una función lambda depende del contexto en el que se use. . Una función lambda puede capturar variables y constantes desde su entorno, lo que significa que puede acceder y modificar las variables definidas en su ámbito de definición. Por ejemplo, supongamos que tienes una lista de números enteros y quieres obtener una nueva lista que contenga el cuadrado de cada número. Puedes hacerlo usando la función map() y una función lambda:
val numeros = listOf(1, 2, 3, 4, 5) val cuadrados = numeros.map { numero -> numero * numero } println(cuadrados) // Imprime "[1, 4, 9, 16, 25]"
En este ejemplo, la función lambda { numero -> numero * numero } captura la variable numero desde su entorno. La función map() luego aplica esta función lambda a cada elemento de la lista numeros y devuelve una nueva lista que contiene los cuadrados de los números originales. . El alcance de una función lambda se limita a su ámbito de definición. Por ejemplo, si defines una función lambda dentro de una función, esa función lambda solo estará disponible dentro de esa función. Además, las variables capturadas por una función lambda solo estarán disponibles dentro del ámbito de definición de la función lambda. . Es importante tener en cuenta que las variables capturadas por una función lambda pueden ser modificadas dentro de la función lambda, pero esto puede causar efectos secundarios no deseados. Si deseas evitar efectos secundarios, es recomendable usar variables inmutables o copias de las variables originales en su lugar. . Espero que esto responda tu pregunta. Si necesitas más información, no dudes en preguntar.
Lambdas = Callbacks en js ?
Una lambda en Kotlin es una función sin nombre que puede asignarse a una variable y tratarse como un objeto. Se escribe con la sintaxis de flecha (->) y puede recibir parámetros. Son especialmente útiles para hacer el código más simple y legible, sobre todo cuando se emplean funciones de orden superior como map o forEach. En resumen, las lambdas ofrecen una forma más compacta y versátil de crear funciones, promoviendo un enfoque funcional en la programación con Kotlin.
Muy parecido a python
val sumar : (Int,Int) -> Int = { x,y -> x + y }
println``(sumar(2,9))
Una lambda en Kotlin es una función anónima que puede ser tratada como un objeto. Se utiliza principalmente para crear funciones de orden superior, es decir, funciones que pueden recibir otras funciones como parámetros o devolverlas como resultado. Una lambda se compone de una lista de parámetros opcionales, una flecha "->" y un cuerpo de función.
Tambien se pudo haber ejecutado la funcion dentro del print de la siguiente manera:
println(myLambda("Hola"))
Mi código :)
// Lambdas val getLengthFromStringLambda : (String) -> Int = { value -> value.length } val someGreetingsInTheWorld = listOf( "Hello", "Hola", "Ciao", "Bonjour", "Hallo", "Olá", "Hej", "Aloha", "Namaste", "Salam", "Ni Hao," ) println(someGreetingsInTheWorld) // it automatically insert the string as lambda parameter val lengthOfSomeGreetingsInTheWorld = someGreetingsInTheWorld.map(getLengthFromStringLambda) println(lengthOfSomeGreetingsInTheWorld)
no son como las arrow functions de JavaScript?