閉包是一個函數,返回值依賴於函數外部的一個或多個變量。
可以理解爲:可以訪問一個函數裏面局部變量的另一個函數
val results = (i:Int) => i*y
在results函數中有兩個變量,一個是i,匿名函數的參數,另一個是自由變量y。自由變量y在運行中會不斷髮生變化,它處於一種“開放狀態”;當函數執行時自由變量y的值已經被確定,此時可以認爲在運行時它暫時處於“封閉狀態”,這種存在開放到封閉過程的函數被稱爲閉包。
高階函數也可以理解爲是一種閉包。
高階函數可以理解是函數中調用函數。