In this episode, Donn talks about Kotlin Lambda Expressions. He explains the syntax and how to build a couple of simple lambda expressions with and without type inference and declaration. We wrap up with a small example of passing a small lambda with multiple values to a function. See the show notes below for more info. This is part 1 of a multi-part series on Lambda Expressions in Kotlin.
The basic syntax of a lambda expression:
val myLambda : Type = { argumentList -> codeBody }The codeBody is the only section that is not optional.
Double lambda expression (doubles an integer) with type inference
val double = { number: Int -> number * 2 } val result = double(4) // result = 8 nowDouble string multi-line lambda with type inference.
val doubleString = { number: Int -> // codebody val doubleResult = number * 2 doubleResult.toString() // Kotlin knows this will return a string }Type declaration in a lambda
val myLambda: (String, Int) -> String = { str, int -> "$str - ${int.toString()}" // "Donn - 32" } val result = myLambda("Donn", 32) // result = "Donn - 32"Preview of next week … passing a lambda to a function
fun doWork(name: String, favoriteNumber: Int, someLambda: (String, Int) -> String) { // Do some processing, this is a contrived example val repeatedString = "$name$name" val result = someLambda(repeatedString, favoriteNumber) println(result) } // Usage doWork("Donn", 32) { str, int -> val someNewValue = "$str is my parameter and so is $int" someNewValue.length.toString() // this is returned } // '37' is printed via println // Or use it like this, the lambda code body is what can change, this is where the power is at doWork("Donn", 32) { name, count -> var result = "" for(i in 1..count) { result += "$name" } result // this is returned } // loops over and concatinates "Donn" until the favorite number (aka count) is met. // Output looks like: "DonnDonnDonnDonnDonnDonn..." and so on...