1. 程式人生 > >Scala 中閉包的概念

Scala 中閉包的概念

閉包的實質就是程式碼與用到的非區域性變數的混合,即:

閉包 = 程式碼 + 用到的非區域性變數

例如,我們定義一個值函式 sum:

此時 Scala 直譯器提示找不到 y 這個值,這是因為我們根本就沒有定義 y 這個變數,所以 Scala 直譯器不知道 y 究竟是什麼內容。接下來我們定義一個變數 y :

現在已經不再報錯了,直接呼叫值函式 sum:

此時 sum 函式的值是6,這是因為我們在值函式外面聲明瞭一個全域性變數,然後值函式中的 y 捕獲到了這個全域性變數,從而使 x + y 變成一個正常的函式定義,讓函式的定義閉合起來,這就是閉包。如果改變 y 的值,閉包也可以捕獲到這個變化的 y 的值,例如讓 y = 15 之後再呼叫值函式 sum:


此時值函式 sum 的返回值變成了 20

以上就是 Scala 中基礎的閉包概念