閉包與柯里化

2021-09-08 23:56:36 字數 1068 閱讀 5015

一、柯里化的概念

在電腦科學中,柯里化是把接受多個引數的函式變換成接受乙個單一引數(最初函式的第乙個引數)的函式,並且返回接受餘下的引數且返回結果的新函式的技術。這個技術由christopher strachey以邏輯學家 haskell curry 命名的,儘管它是 moses schnfinkel 和 gottlob frege 發明的。在直覺上,柯里化聲稱「如果你固定某些引數,你將得到接受餘下引數的乙個函式」。所以對於有兩個變數的函式yx,如果固定了y = 2,則得到有乙個變數的函式2x。

柯里化就是預先將函式的某些引數傳入,得到乙個簡單的函式。但是預先傳入的引數被儲存在閉包中,因此會有一些奇特的特性。比如:

二、柯里化的應用url:url,

cache:false,

async:true,

datatype:"json",

data:params,

//當非同步請求成功時呼叫

success: function(data, status),

//當請求出現錯誤時呼叫

error: function(err)

});}

refresh("action.do?target=news", update("newspanel"));

refresh("action.do?target=articles", update("articlepanel"));

refresh("action.do?target=pictures", update("picturepanel"));

其中,update函式即為柯里化的乙個例項,它會返回乙個函式,即:

update("newspanel") = function(text)

由於update(「newspanel」)的返回值為乙個函式,需要的引數為乙個字串,因此在refresh的ajax呼叫中,當success時,會給callback傳入伺服器端返回的資料資訊,從而實現newspanel面板的重新整理,其他的文章面板articlepanel,面板picturepanel的重新整理均採取這種方式,這樣,**的可讀性,可維護性均得到了提高。

Scala的閉包和柯里化

1 scala中的閉包 閉包是指有權訪問另外乙個函式作用域中的變數的函式。可以理解為能夠讀取另乙個函式作用域的變數的函式。乙個函式的函式體是乙個新的函式,這個函式體函式是閉包 有權訪問另外乙個函式作用域中的變數 閉包可以作為函式引數傳遞 val filteralllogclasrdd casecla...

理解Scala閉包和柯里化

柯里化 def add a int b int a b 等價於 def add a int,b int a bpackage com.zhengkw.scala.day03 classname closure author zhengkw description date 20 04 22下午 3 ...

Scala 閉包 與 柯力化

閉包是乙個函式,返回值依賴於宣告在函式外部的乙個或多個變數。閉包通常來講可以簡單的認為是可以訪問乙個函式裡面區域性變數的另外乙個函式。如下面這段匿名的函式 val multiplier i int i 10 函式體內有乙個變數 i,它作為函式的乙個引數。如下面的另一段 val multiplier ...