In this episode, Donn continues his talks about Kotlin Lambda Expressions. He explains how you can use lambda expressions as function parameters and as return types for functions.
This is a very dense episode - if you get lost look at the code snippets below or view on them on fragmentedpodcast.com
```
class LogReader { fun processFile(file: File, processLine: (String) -> Unit = {}) { file.forEachLine { println("Number of Chars: ${it.length}") processLine(it) println("Line Done Processing") } }
fun processFileWithHandlers(file: File, logHandler: LogHandler) {
file.forEachLine {
println("Start of Processing")
logHandler.handleLine().forEach { handler -> handler(it) }
println("Line Done Processing")
}
}
}
interface LogHandler { fun handleLine(): List<(String) -> Unit> }
val reader = LogReader() val textFile = File("/Users/donnfelker/scratch/lorem.txt")
// Process with single lambda reader.processFile(textFile, { println("First 10 Chars: ${it.substring(0..9)}") })
val logHandler = object : LogHandler { override fun handleLine(): List<(String) -> Unit> { return listOf<(String) -> Unit>( { line -> println("${line.substring(0, 1)}") }, { line -> println("${line.substring(2, 4)}") }, { line -> println("${line.substring(5, 10)}") } ) } }
// Process with multipe handlers via the logHandler reader.processFileWithHandlers(textFile, logHandler)
```
Sponsors 🙏 * sentry.io - Your code is broken. Let’s fix it together - https://sentry.io/for/android/
Contact * Discord chat or @fragmentedcast or our Youtube channel * @donnfelker and donnfelker (on Instagram) * @kaushikgopal and kaushikgopal (on Instagram)