day23: currying

Currying Function

今天要提到的是 currying 化,
currying 化是 FP 专有的一种 function 表示方式,
他专注在处理每个 function 的 input 和 output,
而且一次执行都只带一个参数


引用: https://medium.com/@jnkrtech/currying-and-uncurrying-in-javascript-and-flow-98877c8274ff

就像这张图,每次 function 只处理一件事,依序处理下去

currying function

const add =(x)=>{
    return function(y){
    return x+ y;
    }
}

const add2 = add(2); //function(y){ return 2+ y;}
const add3 = add2(3) // 5

可以看到使用者第一个带入 2 的参数然後利用 clouser 的特性,
把 2 的变数存在 function(y){ return 2+ y;} 中,
再利用下一次执行这个 function 把变数相加显出结果

这样的好处我们只要关注每一层 function 带的参数,
而不用去管每一层的逻辑

Partial Function

除了 Currying Function 还有 Partial Function,
Currying Function 就是一次传一个参数进去,但如果是 Partial Function,
就可以传不限一个参数,好处是可以在有些固定数量的 function 处理,
不用一层一层像 Currying Function 这样传进来,不过他也类似 Currying Function


引用: https://medium.com/@jnkrtech/currying-and-uncurrying-in-javascript-and-flow-98877c8274ff

const addAndMultiply = (x)=>{
    return function(y,z){
        return x +(y*z);
    }
}
const add2 = addAndMultiply(2);
const multiply = add2(3,4); //14

之後我们会展示 Ramda.js 里面有一些封装好的 currying 函式可以使用

https://medium.com/@jnkrtech/partial-function-application-in-javascript-and-flow-7f3ca87074fe
https://medium.com/@jnkrtech/currying-and-uncurrying-in-javascript-and-flow-98877c8274ff


<<:  Day 23 - 重覆呼叫shioaji.Shioaji()产生的记忆体问题

>>:  Day23 DB-NodeJS中的MySQL

Day29:HTML(27) form(6)

输入类型密码 "input type="password""...

Day1.准备好踏入嵌入式的第一步

嵌入式系统其实在我们的生活中无所不在,嵌入式系统是嵌入式计算机系统的简称,也就是说嵌入式系统与普通计...

Day 26:IIO (Part 4) - 帮感应器写驱动程序!以 TCRC5000 为例

这篇将会综合前面的 GPIO 与 IIO 的知识,帮一个常见的红外线感测器 -- TCRC5000 ...

台上三分钟,台下十年工

献给想要站在技术分享社群的朋友,希望这篇分享可以让你勇敢向前迈进。 刚成为现职公司员工时,刚好有个机...

【从实作学习ASP.NET Core】Day18 | 後台 | 会员的 CRUD 页面

今天接续昨天的内容,把会员管理页面做一个收尾 使用者列表 这边可以用 ViewModel 来呈现使用...