一元函数chainer javascript

时间:2016-07-31 14:53:50

标签: javascript

我的任务是编写一个更高阶函数,用于将一元函数列表链接在一起。第一个参数是一个数组,它包含要调用的函数的名称。第二个参数是要与函数一起使用的值。这是代码

for (id in 1:5) {
files_full <- Sys.glob("*.csv")
fileQ <- files_full[[id]]
empty_tbl <- rbind(empty_tbl, read.csv(fileQ, header = TRUE))
}

所需的输出是19,但它只执行第一个函数并打印出16个。我想我需要以某种方式组合这些函数,但不能绕过它。我需要使用apply()或call()方法来完成任务吗?我是函数式编程的新手。

1 个答案:

答案 0 :(得分:2)

您的问题是return a[i](b) 只调用第一个函数并立即返回其结果。您需要在循环后放置return

for (var i = 0; i < a.length; i++) {
    b = a[i](b)
}
return b

或者,这是reduce / fold的一个很好的用例(您可能在函数组合之前遇到过):

return function(b) {
    return a.reduce(function(b, f) { return f(b) }, b)
};

甚至

return a.reduce(compose, function id(x) { return x; });