new_counter <- function(){
ij <- 0
function(){
ij <<- ij+1
ij
}
}
counter_one <- new_counter()
counter_two <- new_counter()
counter_one()
counter_one()
。
他们写道:
计数器拿到围绕“新的开始”限制在当地环境不修改 变量。由于修改是在 不变的父(或封闭)环境中进行的,因此跨功能调用将它们保留为 。
这就是我的想法是怎么回事:在.GlobalEnv
(enclosing environment
),以及该counter_one
功能,创建new_counter
功能。但是函数的execution environment
函数比counter_one函数高一级。这通常是暂时的,但这次不是因为我们有一个机箱功能。
但是,我怎样才能看到'这'封闭环境,他们是一个层面呢?使用(pryr)where
和环境为这两种功能提供全球环境。
编辑: 他们谈论两种不同的环境: '在unchainging父环境'
所以对我来说
- '在theire当地环境'
- 这是两个不同的环境但如果他们不同,他们可能会有不同的名字!我怎样才能找到名字?使用
where("new_counter") where("counter_one")
都提供了全球环境,但看上面的枚举必须是两个不同的。
我不完全清楚你在问什么,你可以尝试解释更多/不同? – nrussell
我编辑了我的问题,并希望它更容易理解。 – ruedi
“使用环境'为这两种功能提供全球环境。” - 不,绝对不会。你会得到不同的环境。 –