相信不少搞java的童鞋剛開始都會困惑kotlin中經常中看到的閉包到底是個什麼東西。我們簡單點的理解就是{ },我們來舉個例子如:fun test() { //閉包 }
然後我們在來看看閉包可以做些什麼。首先閉包需要知道閉包有些什麼
1.函數的運行環境
2.持有函數運行狀態
3.支持在閉包裏面定義函數
4.支持在閉包裏面定義類
在讓我們來看一個例子
fun test(): () -> Unit { var a = 0 fun test2(){ print(a) } return fun() { a++ println(a) } }
我們可以看到在test函數裏面又定義了一個test2()的函數 ,並且返回了一個函數 而這些在java中都是不支持的
而函數中可以定義函數和返回函數又有什麼優勢呢,我們再來看一個例子。
inline fun talk(area: (name:String)->String, noinline area2: (name:String)->String):String{ return area("你猴")+ area2("泥猴") }
調用:
talk({name ->"$name 1"},{name ->"$name 2"})
輸出結果爲
我們可以將函數傳遞到另一個函數當中從而實現面試函數式編程。而面向函數式變成有什麼好處我們在本文中就不做展開了
謝謝各位看官