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...