lambda表達式是什么玩意?
一言蔽之:lambda表達式就是一個匿名函數(shù)
我們通常這樣寫匿名函數(shù):
這樣寫可能有點麻煩蜗字,我們使用lambda表達式可以這么寫:
嘿嘿级零,是不是簡介了很多序调,當然還可以更加簡潔。
lambda如何寫甚纲?
-
聲明
-
實現(xiàn)
可以這么寫:
由于知道了出入?yún)?shù)的是什么類型,我們還可以這么寫:
嘿嘿凰荚,是不是很簡潔到涂。
更加簡潔:
考慮到通常情況下往核,匿名函數(shù)只有一個參數(shù)衩婚,所以咱們的lambda可以這么寫:
注意:
在lambda中不可用直接使用return:
你可以使用return+label這種形式:
lambda中最后一個表達式的值是默認的返回值:
高階函數(shù)是啥玩意?
高階函數(shù)
名字起的很高大上,其實它就是個函數(shù)哟旗。
只不過這個函數(shù)特征是:參數(shù)是函數(shù)近尚,或者返回值是函數(shù),如下圖:
-
參數(shù)是函數(shù)
-
返回值是函數(shù)
解釋:
在kotlin中硬梁,函數(shù)是一種類型牧愁,所以我們可以把一個具體的函數(shù)當成對象。
既然函數(shù)是一個對象啦盏檐,我們想怎么玩這個對象就怎么玩。
比如:
- 把函數(shù)當成參數(shù)傳遞
- 把函數(shù)當成返回值傳遞出來
如何將函數(shù)傳遞給高階函數(shù)秸弛?
我們明白了高階函數(shù)的定義,那么如何給高階函數(shù)傳參呢冷离?
實用場景:
比如我們要對int的集合做變換:
你現(xiàn)在只要提供一個變換函數(shù)即可,想怎么變換由你疗我,是不是很靈活!