根據(jù)官方文檔镜沽,閉包通常下三種形式之一:
全局函數(shù):是一個(gè)有名字但不會(huì)捕獲任何值的閉包
嵌套函數(shù):是一個(gè)有名字并可以捕獲其封閉函數(shù)域內(nèi)值的閉包
閉包表達(dá)式:是一個(gè)利用輕量級(jí)語(yǔ)法所寫(xiě)的可以捕獲其上下文中變量或常量值的匿名閉包
閉包表達(dá)式:匿名閉包
一、閉包引入
閉包表達(dá)式語(yǔ)法:
由一堆{}開(kāi)始和結(jié)束罗珍;in關(guān)鍵字把閉包分為兩部分:
參數(shù)與返回值、閉包體
第二部分:閉包縮寫(xiě)
需求:把我們的java成績(jī)放到一個(gè)數(shù)組里慈参,定義一個(gè)函數(shù)把大于某個(gè)值取出來(lái)
第三部分:尾隨閉包
使用情景:當(dāng)閉包作為i最后一個(gè)參數(shù)傳遞給函數(shù)的時(shí)候推沸,可以單獨(dú)提出來(lái)
問(wèn)題1:尾隨閉包跟在誰(shuí)后面? ——函數(shù)后面
問(wèn)題2:尾隨閉包的好處 ——提升代碼的可讀性
值捕獲
值捕獲:也就是空手套白狼议泵,把別人的變量或常量拿過(guò)來(lái)用
從案例中可以看出占贫,incrementer內(nèi)嵌函數(shù)自己沒(méi)有定義任何的變量或常量,但可以捕獲上下文中的常量和變量先口,拿過(guò)來(lái)自己使用靶剑。
逃逸閉包