我查看了 R 中的其他词汇范围问题,但找不到答案。考虑这段代码:
f <- function(x) {
g <- function(y) {
y + z
}
z <- 4
x + g(x)
}
f(3)
f(3)
将返回 10 的答案。我的问题是为什么?该点g()
是在代码中定义的,z
尚未分配任何值。在什么时候g()
创建闭包?它是否“向前看”到函数体的其余部分?g(x)
它是在评估时创建的吗?如果是这样,为什么?
我查看了 R 中的其他词汇范围问题,但找不到答案。考虑这段代码:
f <- function(x) {
g <- function(y) {
y + z
}
z <- 4
x + g(x)
}
f(3)
f(3)
将返回 10 的答案。我的问题是为什么?该点g()
是在代码中定义的,z
尚未分配任何值。在什么时候g()
创建闭包?它是否“向前看”到函数体的其余部分?g(x)
它是在评估时创建的吗?如果是这样,为什么?