How can we implement a function that return "it" like forEach, map...?


#1

Hello everyone,

I find the functions like forEach, Map, filter quite interesting since they can pass a “it” to the block inside and I have used them a lot, but how I can implement a similar function?

Thank you a lot.


#2

Take a look at higher order functions. The basic idea is that you pass a function as an argument to another function. So lets say you define a function like this

fun foo(inner: (Int) -> Unit) {
	for(i in 0..100){
		inner(i)
	}
}

Now you could call this the same way you call forEach.

foo { println(it) }
// or
foo { someName -> println(someName) }
// or
foo ( { println(it) } )
// you can also pass a reference to a different function
fun bar(i: Int) = println(i)
foo(::bar)

#3

Thank you it was nice :smiley: