繁体   English   中英

如何拦截或编辑咖喱函数

[英]How to intercept or edit curried function

我是js和函数式编程的新手

我的问题在下面

const orgFunc = (str, str2) =>{
    return str + ' ' + str2;
}

const curryFunc = (str) =>
{
    return orgFunc(str,'curried'); 
}

const interceptFunc = (fn) =>
{
    return fn;
}

1 console.log("orgFunc",orgFunc('func','org'));
>func org
2 console.log("curryFunc", curryFunc('func'));
>func curried    
3 console.log("interceptFunc", interceptFunc(curryFunc)('func'));
>func curried

我想将3的结果“ func curried”更改为“ func拦截”,并将“ curried”替换为“拦截”

但是在interceptFunc函数中

const interceptFunc = (fn) =>
{
    return fn
}

fn是函数,所以我不能使用fn.replace(“ curried”,“ intercepted”)

有什么办法吗?

您可以通过修改interceptFunc函数来实现。

你的interceptFunc除了返回另一个函数外没有做任何其他事情。

检查下面的代码片段,我们在其中返回另一个实际上充当拦截器的函数。

 const orgFunc = (str, str2) =>{ return str + ' ' + str2; } const curryFunc = (str) => { return orgFunc(str,'curried'); } const interceptFunc = (fn) => { return function(someInput){ return fn(someInput).replace('curried', 'intercepted'); } } console.log(interceptFunc(curryFunc)("func")); 

我不确定您要做什么。 但是您可以像这样使用replace:

 const orgFunc = (str, str2) =>{ return str + ' ' + str2; } const curryFunc = (str) => { return orgFunc(str,'curried'); } const interceptFunc = (fn) => { return fn; } console.log("orgFunc",orgFunc('func','org')); console.log("curryFunc", curryFunc('func')); console.log("interceptFunc", interceptFunc(curryFunc)('func').replace('curried', 'intercepted')); 

暂无
暂无

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

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