gpt4 book ai didi

javascript - 闭包 - R 和 Javascript 之间的区别

转载 作者:行者123 更新时间:2023-11-29 19:46:28 25 4
gpt4 key购买 nike

R 和 Javascript 之间的具体区别是什么,这意味着在以下两个非常相似的示例中,我需要 R 版本中的附加行来“固定”第一个匿名函数的参数值?

是不是因为 R 推迟求值直到强制执行(我认为 Lisp 就是这样做的),但 Javascript 会尽早求值?还是我走错路了?

R 版

test <- list()
for (i in 1:10) {
test[[i]] <- (function(index) {
index <- index # why does R need this line when Javascript doesn't
return (function() {
print (index)
})
})(i)
}
test[[5]]()
test[[10]]()

Javascript 版本

test = new Array()
for (var i=1; i<=10; i++) {
test[i] = (function(index) {
return function() {
alert(index)
}
})(i)
}
test[5]()
test[10]()

最佳答案

R 使用惰性求值。你不需要 index <- index
您可以使用 force(index)


换句话说,index的值在实际使用该值之前不会计算。因此,如果在传递参数和评估参数之间发生任何更改,这些更改将反射(reflect)在最终输出中。

force ,顾名思义,强制对对象进行评估。

当您使用 index <- index 时那时您正在创建一个具有相同名称的不同对象。

关于javascript - 闭包 - R 和 Javascript 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com