Function constraint!


Defined two functions like this.

fun foo(inputFoo: IntArray.() -> Unit) {

fun test() { 


inputFoo is a IntArray’s function.
But we can invoke by foo { test() }


This topic is convered in Function Literals with receiver.

Basically you are defining an extension function over IntArray with IntArray.() -> Unit.
So in the body of the lambda function, where you now call foo(), you can also directly call IntArray functions.