Я рассмотрел другие лексические вопросы в области R, и я не могу найти ответ. Рассмотрим этот код:Когда Лексический Сфера для функции в пределах определенной функции?
f <- function(x) {
g <- function(y) {
y + z
}
z <- 4
x + g(x)
}
f(3)
f(3)
возвратит ответ 10. Мой вопрос: почему? В точке g()
определено в коде, z
не присвоено никакого значения. В какой момент создается закрытие для g()
? Он «смотрит в будущее» на остальную часть тела функции? Создается ли при оценке g(x)
? Если да, то почему?
Это может помочь людям объяснить, если вы сказали, какое значение вы ожидали, кроме 10 – joran
Обратите внимание, что в новом сеансе 'f <- function (x) {y}' будет определять 'f' без проблем. R не заботится о том, что внутри 'f', пока оно не вызвано. –