今天要提到的是 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 带的参数,
而不用去管每一层的逻辑
除了 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()产生的记忆体问题
输入类型密码 "input type="password""...
嵌入式系统其实在我们的生活中无所不在,嵌入式系统是嵌入式计算机系统的简称,也就是说嵌入式系统与普通计...
这篇将会综合前面的 GPIO 与 IIO 的知识,帮一个常见的红外线感测器 -- TCRC5000 ...
献给想要站在技术分享社群的朋友,希望这篇分享可以让你勇敢向前迈进。 刚成为现职公司员工时,刚好有个机...
今天接续昨天的内容,把会员管理页面做一个收尾 使用者列表 这边可以用 ViewModel 来呈现使用...