沒錯,今晚的內容,終於呼應了我們的「Function是什麼?能吃嗎?」這個小主題啦!!如果是Curry的話,可以吃喔^.<(大誤)
Currying is the process of taking a function with multiple arguments and turning it into a sequence of functions each with only a single argument. Currying is named after a mathematician Haskell Curry. By applying currying, a n-ary function turns it into a unary function.
Curried functions are great to improve code reusability and functional composition.
柯里化是一個將具有多個引數的函式
化為一系列僅帶有一個引數的函式
的過程。柯里化是以數學家 Haskell Curry 為命名的。藉由使用柯里化,一個多元函式 (n-ary function) 可以轉為一個一元函式(unary function)。而柯里化函式非常有助於提升、改善程式碼的可複用性與複合函式的設計。
讓我們來看看一個多元函式如何轉為一個柯里化函式:
const multiArgFunction = (a, b, c) => a + b + c;
const curryUnaryFunction = a => b => c => a + b + c;
curryUnaryFunction (1); // returns a function: b => c => 1 + b + c
curryUnaryFunction (1) (2); // returns a function: c => 3 + c
curryUnaryFunction (1) (2) (3); // returns the number 6
你也許有發現,今天的範例使用到許多的=>
,且乍看之下與我們平常所熟悉的
function functionName(){
// do something
}
寫法相差頗大。這其實就是箭頭函式
,而關於它的寫法與限制,將在明天有更詳盡的介紹( ´∀`)つt[ ]
本文中提到的複合函式,筆者在搜尋相關資訊時找到了一篇滿清楚的文章,供各位參考:Functional Composition in Javascript
若內容或與翻譯的部分有什麼錯誤或能更好的地方,再麻煩不吝指教了:)