Fragmented - Android Developer Podcast cover image

Fragmented - Android Developer Podcast

165: Learning Kotlin: Lambda Expressions Part 1

Jun 17, 2019
15:39

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 now

Double 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... 

Get the Snipd
podcast app

Unlock the knowledge in podcasts with the podcast player of the future.
App store bannerPlay store banner

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode

Save any
moment

Hear something you like? Tap your headphones to save it with AI-generated key takeaways

Share
& Export

Send highlights to Twitter, WhatsApp or export them to Notion, Readwise & more

AI-powered
podcast player

Listen to all your favourite podcasts with AI-powered features

Discover
highlights

Listen to the best highlights from the podcasts you love and dive into the full episode