簡體   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