Looking for kotlin Keywords? Try Ask4Keywords

KotlinLambdas basicas


Sintaxis

  • Parámetros explícitos:

  • {parametersName: ParameterType, otherParameterName: OtherParameterType -> anExpression ()}

  • Parámetros inferidos:

  • adición val: (Int, Int) -> Int = {a, b -> a + b}

  • Un solo parámetro it taquigrafía

  • cuadrado de val: (Int) -> Int = {it * it}

  • Firma:

  • () -> ResultType

  • (InputType) -> ResultType

  • (InputType1, InputType2) -> ResultType

Observaciones

Los parámetros de tipo de entrada se pueden omitir cuando se pueden omitir cuando se pueden inferir del contexto. Por ejemplo, digamos que tiene una función en una clase que toma una función:

data class User(val fistName: String, val lastName: String) {
    fun username(userNameGenerator: (String, String) -> String) =
        userNameGenerator(firstName, secondName)
}

Puede utilizar esta función pasando un lambda, y como los parámetros ya están especificados en la firma de la función, no es necesario volver a declararlos en la expresión lambda:

val user = User("foo", "bar")
println(user.userName { firstName, secondName ->
     "${firstName.toUppercase}"_"${secondName.toUppercase}"
 }) // prints FOO_BAR

Esto también se aplica cuando está asignando un lambda a una variable:

//valid:
val addition: (Int, Int) = { a, b -> a + b }
//valid:
val addition = { a: Int, b: Int -> a + b }
//error (type inference failure):
val addition = { a, b -> a + b }

Cuando la lambda toma un parámetro, y el tipo se puede inferir del contexto, puede referirse al parámetro por it .

listOf(1,2,3).map { it * 2 } // [2,4,6]

Lambdas basicas Ejemplos relacionados