Fragmented - Android Developer Podcast

The Fragmented Podcast is a podcast for Android Developers hosted by Donn Felker and Kaushik Gopal. Our goal is to help you become a better Android Developer. We chat about topics such as Testing, Dependency Injection, Android Patterns and Practices, useful libraries and much more. We will also be interviewing some of the top Android Developers out there. Subscribe now and join us on the journey of being an Android Developer.


episode 165: 165: Learning Kotlin: Lambda Expressions Part 1

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: kotlin val myLambda : Type = { argumentList -> codeBody }

The codeBody is the only section that is not optional.

Double lambda expression (doubles an integer) with type inference kotlin val double = { number: Int -> number * 2 } val result = double(4) // result = 8 now

Double string multi-line lambda with type inference. kotlin val doubleString = { number: Int -> // codebody val doubleResult = number * 2 doubleResult.toString() // Kotlin knows this will return a string }

Type declaration in a lambda kotlin 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 ```kotlin 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...



 2019-06-17  15m