Inline functions
You can think of inline
functions as instructions for the compiler to copy and paste your code. Each time the compiler sees a call to a function marked with the inline
keyword, it will replace the call with the concrete function body.
It makes sense to use the inline
function if it's a higher-order function that receives a lambda as one of its arguments. This is the most common use case where you would like to use inline
.
Let's look at such a higher-order function and see what pseudocode the compiler will output.
First, here is the function definition:
inline fun logBeforeAfter(block: () -> String) { println("Before") println(block()) println("After") }
Here, we pass a lambda, or a block
, to our function. This block
simply returns the word "Inlining"
as a String
:
logBeforeAfter { "Inlining" }...