相关疑难解决方法(0)

什么是'Currying'?

我在几篇文章和博客中看到了对curried函数的引用,但我找不到一个好的解释(或者至少有一个有意义的解释!)

functional-programming terminology definition currying

628
推荐指数
12
解决办法
15万
查看次数

如何创建memoize功能

我对这个memoize问题很难过.我需要创建一个函数来检查是否已经为给定参数计算了值,返回先前的结果,或者运行计算并返回该值.

我花了好几个小时,而我是JS的新手.我无法理解如何做到这一点.我不能使用任何内置函数,并且真的想了解我需要做什么.

这是我到目前为止所做的,这是错误的,在这一点上感觉像伪代码.我已经在这里搜索了现有的memoize问题,但我似乎无法使任何解决方案工作.任何帮助深表感谢.

  myMemoizeFunc = function(passedFunc) {
  var firstRun = passedFunc;
  function check(passedFunc){
    if(firstRun === undefined){
        return passedFunc;
    }else{return firstRun;}
  }
  };
Run Code Online (Sandbox Code Playgroud)

对不起,我应该更清楚了.以下是我的具体要求:myMemoizeFunc必须返回一个函数,该函数将检查是否已经为给定的arg计算了计算,并在可能的情况下返回该val.passedFunc是一个保存计算结果的函数.我明白这可能看起来像是重复的,但我并不是这样,因为我在理解我应该做什么方面有一些严重的困难,需要比其他帖子更多的帮助.这就是我的思维过程带给我的目标,但我又离开了.

myMemoizeFunc = function(passedFunc) {
var allValues = [];
return function(){
    for(var i = 0; i < myValues.length; i++){
        if(myValues[i] === passedFunc){
            return i;
        }
        else{
            myValues.push(passedFunc);
            return passedFunc;
        }
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

我不应该在这里返回i或者传递函数,但是在检查值时我还能在if/else中做什么呢?我一直在关注这个问题,我开始实现的代码非常荒谬,需要一些新的建议.

javascript memoization underscore.js

5
推荐指数
1
解决办法
5241
查看次数