繁体   English   中英

把 function 变成 ramda pipe/compose

[英]turn function into ramda pipe/compose

我想把这个 function:

const get1 = (v, d) => path(split(/[[\].]/, d), v);
get1("a.d", {a:{d:"f"}})

进入 pipe 或撰写 function 而无需像这样使用它:

get1("a.d")({a:{d:"f"}})

我想我很好奇为什么有两个问题。 首先, fn (a) (b)有什么问题吗? 我个人发现,即使我不必这样做,我现在也首先倾向于这样做。 仅仅是个人喜好还是有更深层次的东西?

第二,为什么要重写一个完全可读的 function 来使用pipe / compose 我是 Ramda 的创始人之一,我喜欢这个库,但我当然不认为有必要让一切都变得无意义。

至于how ,Hitmands 已经给出了合理的答案,使用了 Ramda 有点奇怪的useWith 另一种方法是pipe / compose并将结果提供给uncurryN

 const get2 = uncurryN (2, pipe (split (/[[\].]/), path)) console.log (get2 ("ad", {a: {d: "f"}}))
 <script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.js"></script> <script> const {uncurryN, pipe, split, path} = R </script>

但是这两个答案中的任何一个似乎都比原来的可读性差。

这应该有助于:

 const fn = R.useWith(R.path, [R.split('.'), R.identity]); console.log( fn("ad")({ a: { d: 'f' } }), //curried call ); console.log( fn("ad", { a: { d: 'f' } }), //call with two arguments );
 <script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.js" integrity="sha512-3sdB9mAxNh2MIo6YkY05uY1qjkywAlDfCf5u1cSotv6k9CZUSyHVf4BJSpTYgla+YHLaHG8LUpqV7MHctlYzlw==" crossorigin="anonymous"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM