如何解决重构 `f(g(x))(x)` 以便我可以很好地组合它
const someFunction = x => f(g(x))(x);
即
由于嵌套的括号、现实世界的函数名称以及 x
等的多次使用,感觉有点笨重...
我一直在使用 lodash/fp
,我的第一个想法是 _.flow
,但最后我仍然需要将 x
传递到流的输出中。
嗯...除非我颠倒 f
中参数的顺序,否则我可以做...
const someFunction = x => _.flow(g,f(x))(x);
我认为这会起作用,因为 f(x)
会将 x
传递给 f
以获取函数。然后这个 _.flow(g,f(x))(x)
会将 x
传递给 g
,然后将它的输出传递给从 f
返回的结果柯里化函数。
虽然它仍然很笨重。对此并不完全满意。是否有另一种更优雅/更易读的方法可以建议。
解决方法
感谢@Ori_Drori 的输入,我创建了一个函数...
const chain = _.curry((f,g,x) => f(g(x))(x));
然后我的代码开始是...
const myOldFunction = (x) => f(g(x))(x);
变成了……
const myAwesomeNewFunction = chain(f,g);
这使得它更具可读性,并将它变成了一个具有单一输入的函数,这意味着我可以让它指向自由,然后将它非常好地放入我的其余函数中。 ??
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。