June 2018
Intermediate to advanced
310 pages
6h 32m
English
You can think of inline functions as a copy/paste instruction for the compiler. Each time the compiler sees a call to a function marked with inline, it will replace the call with the concrete function body.
It makes sense to use the inline function only if it's a higher-order function that receives a lambda as one of its arguments:
inline fun doesntMakeSense(something: String) { println(something)}
This is the most common use case where you would like to use inline:
inline fun makesSense(block: () -> String) { println("Before") println(block()) println("After")}
You call it as usual, with the block body:
makesSense { "Inlining"}
But if you view the bytecode, you'll see it's actually translated to the lines produces and
Read now
Unlock full access