我的任务是必须从头开始编写撰写,这是要求:
编写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没有任何访问方式
答案 0 :(得分:0)
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
答案 1 :(得分:-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!'