柯里化函式組合的學習

2022-08-11 04:57:09 字數 1161 閱讀 6602

2020-09-19

柯里化函式組合的學習

說明:思路:

//

never say die => never-say-die

const _ = require('lodash');

//join函式改寫 柯里化的join 在組合中 可以事先傳入使用哪種方式組合

const join = _.curry((sep, arr) =>arr.join(sep));

//split函式改寫 柯里化的split 在組合中 可以事先傳入使用哪種方式分割

const split = _.curry((sep, str) =>str.split(sep));

//柯里化的日誌函式 可以在呼叫的時候傳入特殊的符號標記當前處於哪一步

//tag是寫入的標記符號

//const trace = _.curry((tag, v) =>)

//map改寫

//柯里化 匿名函式 第乙個參是fn 第二個是要處理的陣列

const map = _.curry((fn, arr) =>_.map(arr, fn));

//const handler = _.flowright(join('-'), split(' '), log, _.tolower);

const handler = _.flowright(join('-'), trace('map 之後'), map(_.tolower), trace('split 之後'), split(' '));

//步驟分析

//1: handle呼叫傳入的字串 經過 型別為 ' ' 分割

//2: 列印 標記為 split 之後 的經過split分割後的結果

//3:將結果傳給map map中是將陣列的每一項變成小寫 並返回處理後的結果

//4: 同2

//5: 將都變成小寫的結果陣列 傳入join 以 '-' 拼接 並將結果返回

let a = handler('never say die');

console.log(a);

列印結果

感覺今天以前我都看不懂上面的** 

今天經驗值 +10!

函式柯里化

在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。在直覺上,柯里化聲稱 如果你固定某些引數,你將得到接受餘下引數的乙個函式 柯里化實現的原理 在函式式程式語言中,將函式可以當做物件傳遞呼...

函式柯里化

curry 的概念 只傳遞給函式一部分引數來呼叫它,讓它返回乙個函式去處理剩下的引數先看乙個簡單例子,add函式接受 2 個引數 或者多個 addx函式接受 1 個引數。換而言之,所謂 柯里化 就是把乙個多引數的函式,轉化為單引數函式。將乙個函式轉換為乙個新的函式 非柯里化 function add...

函式柯里化

curry 的概念 只傳遞給函式一部分引數來呼叫它,讓它返回乙個函式去處理剩下的引數先看乙個簡單例子,add函式接受 2 個引數 或者多個 addx函式接受 1 個引數。換而言之,所謂 柯里化 就是把乙個多引數的函式,轉化為單引數函式。將乙個函式轉換為乙個新的函式 非柯里化 function add...