每天學習一點Scala06_閉包

一個函數字面量的函數體通常只能使用輸入參數和函數字面量內定義的本地變量.不過,Scala允許一個函數字面量使用它所在環境的變量.

所謂"閉包",指的是這樣的一個函數字面量,它使用一個從其所在環境"捕獲"到的非本地、非參數變量。有時人們會交替使用術語"函數字面量"和"閉包"。但是從技術上來說,它們並不相同。

下面是一個閉包的例子:

def encodeWithSeed(num:Int, seed:Int):Long = {
  def encode(x:Int,func:(Int)=>Int):Long = {
    val y = x + 1000;
    func(y);
  }
  val result = encode(num,(n:Int)=>(n*seed));
  result;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章