Looking for kotlin Keywords? Try Ask4Keywords

KotlinGrundlegende Lambdas


Syntax

  • Explizite Parameter:

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

  • Abgeleitete Parameter:

  • Addition: (Int, Int) -> Int = {a, b -> a + b}

  • Einzelne Parameter it Kurzschrift

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

  • Unterschrift:

  • () -> ResultType

  • (Eingabetyp) -> ResultType

  • (InputType1, InputType2) -> ResultType

Bemerkungen

Eingabetypparameter können ausgelassen werden, wenn sie ausgelassen werden können, wenn sie aus dem Kontext abgeleitet werden können. Angenommen, Sie haben eine Funktion für eine Klasse, die eine Funktion übernimmt:

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

Sie können diese Funktion verwenden, indem Sie ein Lambda übergeben. Da die Parameter bereits in der Funktionssignatur angegeben sind, müssen Sie sie nicht im Lambda-Ausdruck erneut deklarieren:

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

Dies gilt auch, wenn Sie einer Variablen ein Lambda zuweisen:

//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 }

Wenn für das Lambda ein Parameter benötigt wird und der Typ aus dem Kontext abgeleitet werden kann, können Sie auf den Parameter durch it Bezug nehmen.

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

Grundlegende Lambdas Verwandte Beispiele