好程序員大數(shù)據(jù)Scala系列之閉包,閉包是一個函數(shù),,返回值依賴于聲明在函數(shù)外部的一個或多個變量,。 函數(shù)體內(nèi)可以方法相應作用域內(nèi)的任何變量。 閉包通常來講可以簡單的認為是可以訪問一個函數(shù)里面局部變量的另外一個函數(shù),。 普通函數(shù): val multiplier = (i:Int) => i * 10 函數(shù)體內(nèi)有一個變量 i,,它作為函數(shù)的一個參數(shù)。 val multiplier = (i:Int) => i * factor 在 multiplier 中有兩個變量:i 和 factor,。其中的一個 i 是函數(shù)的形式參數(shù),,在 multiplier 函數(shù)被調(diào)用時,,i 被賦予一個新的值,。然而,factor不是形式參數(shù),,而是自由變量,考慮下面代碼: var factor = 3 這里我們引入一個自由變量 factor,,這個變量定義在函數(shù)外面。 這樣定義的函數(shù)變量 multiplier 成為一個"閉包",,因為它引用到函數(shù)外面定義的變量,定義這個函數(shù)的過程是將這個自由變量捕獲而構(gòu)成一個封閉的函數(shù),。 object Test { |
|
來自: 好程序員IT > 《大數(shù)據(jù)培訓教程》