官术网_书友最值得收藏!

High-order functions

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 defining the validityCheckFunc function at runtime, while we are calling the highOrderFunc function inside the main function.

Note that the isEven function in this program is an extension function that has been defined inside the project files you got with the book.

Here is the output:

a 12 is Valid 
a 19 is Invalid 
主站蜘蛛池模板: 原平市| 宜城市| 晴隆县| 喀喇沁旗| 湄潭县| 彭阳县| 彰化市| 道孚县| 镇远县| 武胜县| 纳雍县| 马鞍山市| 岢岚县| 盘锦市| 塘沽区| 鄂托克前旗| 海盐县| 东宁县| 葵青区| 泽库县| 拜城县| 西华县| 耒阳市| 和硕县| 厦门市| 望都县| 麻阳| 高碑店市| 景洪市| 信阳市| 读书| 乌鲁木齐县| 卫辉市| 彩票| 开封市| 清水河县| 福泉市| 吴忠市| 高邑县| 安远县| 九寨沟县|