Function constraint!


#1

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() }


#2

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.