从头开始撰写comp,如何传递参数?

问题描述

我的任务是必须从头开始编写撰写,这是要求:

编写Compose和Pipe函数。

第1步:实现功能Compose:

Compose应该返回一个由列表组成的函数 任意长度的函数。

在随后的函数的返回值上调用每个函数。

您可以将compose视为通过其参数从右向左移动。

撰写示例:

var greet = function(name){ return 'hi: ' + name;}
var exclaim = function(statement) { return statement.toUpperCase() + '!';}
var welcome = compose(greet,exclaim);
welcome('phillip'); // 'hi: PHILLIP!'

我主要是凭直觉就能使事情正常进行,这是我的解决方案:

var compose = function() {
  var args = arguments
  return function(param) {
    var result = param
    for (let i = args.length -1; i >=0; i --) {
      result = args[i](result)
    }
    return result
  }

};

我不明白的是:“菲利普”如何传递给参数? Compose没有任何访问方式

解决方法

const compose = (...funcs) => params =>
  funcs.reduceRight((value,func) => func(value),params)

首先,我与您对函数compose的实现有所不同。

参数params作为initValue函数的第二个参数reduceRight传递,因此使用它进行第一个函数调用。请注意,第一个函数调用是对funcs数组中的最后一个函数。

用法:

compose(x => x**2,x => x/2)(2); // returns 1
,

您必须将结果从 exclaim 函数传递到问候函数作为参数

const greet = (name) => 'hi: ' + name;
const exclaim = (statement) => statement.toUpperCase() + '!';
const compose = (f1,f2) => (name) => f1(f2(name))
const welcome = compose(greet,exclaim);
welcome('phillip');
// 'hi: PHILLIP!'

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...