鑒于高階函數(shù)在程序設(shè)計(jì)中高頻率的使用,今天對(duì)高階函數(shù)進(jìn)行一個(gè)初步的認(rèn)識(shí)o( ̄︶ ̄)o
本節(jié)目錄:
- 什么是函數(shù),函數(shù)的構(gòu)成部分
- 什么是高階函數(shù),高階函數(shù)的特點(diǎn)
- 如何定義一個(gè)高階函數(shù)
- 怎樣使用一個(gè)高階函數(shù)
1.什么是函數(shù)
(1)函數(shù)的定義
函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一或相關(guān)聯(lián)功能的代碼段。函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。
舉個(gè)栗子:
好比我們的小學(xué)數(shù)學(xué),1+2+3+4+5=15當(dāng)然我們可以一步步加起來(lái)求和,但是我們也可以用公式,(1+5)*5/2=15,這個(gè)公式使得我們的計(jì)算簡(jiǎn)便起來(lái),就如同函數(shù)在程序中的作用,將功能模塊化,每個(gè)函數(shù)都有其特定的實(shí)現(xiàn)功能,減少其對(duì)應(yīng)的代碼量。
(2)函數(shù)的構(gòu)成部分
以下是一個(gè)普通函數(shù)的定義加實(shí)現(xiàn)
fun functionName ( a : Int , b: String) : Unit{
println(" Hello World!")
}
- fun: 為定義函數(shù)的關(guān)鍵字
- functionName : 為你所定義的函數(shù)名
- (a : Int , b : String) :()中是函數(shù)的參數(shù),包括個(gè)數(shù)以及參數(shù)類(lèi)型,a和b就是定義參數(shù)時(shí)的名稱(chēng),Int 和 String 是參數(shù)的類(lèi)型
- :Unit :是函數(shù)的返回類(lèi)型
2.什么是高階函數(shù)
高階函數(shù)的構(gòu)成與普通函數(shù)相同,其最大的特點(diǎn)就是以函數(shù)為參數(shù)
fun method01(){} //定義一個(gè)普通函數(shù)
fun method02( a : method01){}//高階函數(shù)以函數(shù)為參數(shù)
在高階函數(shù)運(yùn)行時(shí),會(huì)進(jìn)行一個(gè)回調(diào),method02()運(yùn)行時(shí)會(huì)去先行運(yùn)行method01(),完成函數(shù)method01()的操作后再繼續(xù)進(jìn)行method02()。
3.怎樣定義一個(gè)高階函數(shù)
fun method03(age:Int, judge:(Boolean,String)->Unit){
judge(true,"jack")
}
//method04()的參數(shù)正是method03高階函數(shù)所需要的函數(shù)參數(shù)
val method04:( Boolean , String)-> Unit={
isBoy,name ->
println("$name ${if (isBoy) "boy" else "girl"}" )
}
//調(diào)用高階函數(shù)
method03(20,method04)
運(yùn)行:

4.怎樣使用一個(gè)高階函數(shù)
最基本的規(guī)律如下:當(dāng)想要定義的函數(shù)需要一系列的程序設(shè)計(jì),并且在運(yùn)行過(guò)程中需要其他的函數(shù)的調(diào)用同時(shí)進(jìn)行時(shí),高階函數(shù)便需要出現(xiàn)了