Those functions that take another function as an argument or return a function as result are called high-order functions. Consider the following example to understand it better:
fun highOrderFunc(a:Int, validityCheckFunc:(a:Int)->Boolean) {//(1) if(validityCheckFunc(a)) {//(2) println("a $a is Valid") } else { println("a $a is Invalid") } } fun main(args: Array<String>) { highOrderFun(12,{ a:Int -> a.isEven()})//(3) highOrderFunc(19,{ a:Int -> a.isEven()}) }
In this program, we've declared a highOrderFunc function, which will take an Int and a validityCheckFunc(Int) function. We are calling the validityCheckFunc function inside the highOrderFunc function, to check whether the value was valid or not. However, we are ...