Fra*_* P. 2 closures functional-programming r
power <- function(exp) {
function(x) {
x ^ exp
}
}
funlist <- lapply(2:3, power)
Run Code Online (Sandbox Code Playgroud)
现在我希望'funlist'的第一个元素是一个方形函数,第二个元素是一个立方体函数.然而,它似乎只是重复'立方'.
> funlist[[1]](5)
[1] 125
> funlist[[2]](5)
[1] 125
Run Code Online (Sandbox Code Playgroud)
有没有办法以这种方式从闭包生成函数列表?或者围绕我可能想要以这种方式处理的问题的一般最佳实践?
它在3.2.0中改变行为的原因是news()文件中的这个公告:
诸如apply函数和Reduce()之类的高阶函数现在强制它们应用的函数的参数,以便消除惰性求值和闭包中的变量捕获之间的不期望的交互.这解决了PR#16093.