iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

圖解Javascript面試題目30天系列 第 4

Day 04 Function是什麼?能吃嗎? (3) Currying Function

  • 分享至 

  • xImage
  •  

「今晚,我想來點Curry」

沒錯,今晚的內容,終於呼應了我們的「Function是什麼?能吃嗎?」這個小主題啦!!如果是Curry的話,可以吃喔^.<(大誤)

15. What is the currying function 柯里化函式是什麼?

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
若內容或與翻譯的部分有什麼錯誤或能更好的地方,再麻煩不吝指教了:)


上一篇
Day 03 Function是什麼?能吃嗎? (2) First Class Function
下一篇
Day 05 Function是什麼?能吃嗎? (4) Lambda, or Arrow Functions
系列文
圖解Javascript面試題目30天9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言