从闭包生成函数列表

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)

有没有办法以这种方式从闭包生成函数列表?或者围绕我可能想要以这种方式处理的问题的一般最佳实践?

42-*_*42- 5

它在3.2.0中改变行为的原因是news()文件中的这个公告:

诸如apply函数和Reduce()之类的高阶函数现在强制它们应用的函数的参数,以便消除惰性求值和闭包中的变量捕获之间的不期望的交互.这解决了PR#16093.

  • 实际上我在浏览器中打开了新闻并搜索了`force`.所以我想我应该写:......"卢克,"新闻()`'力'". (4认同)