带有打印的奇怪的关闭行为

时间:2019-04-20 08:45:09

标签: r closures

在以下R代码中,如果我注释掉print(i)行,则结果为

3
3
3

但是使用print,结果是

1
2
3

我不知道为什么?打印如何影响结果?谢谢!

f <- vector('list',3)
# set the i'th function to return i
for(i in 1:length(f)) {
  f[[i]] <- (function(i){
    # STRANGE HERE!
    print(i)
    function(){i}
  })(i)
}
# apply the functions using a different loop variable
for(j in 1:length(f)) {
  print(f[[j]]())
}

0 个答案:

没有答案