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 lambdareader.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 logHandlerreader.processFileWithHandlers(textFile, logHandler)
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More