8
我已經看過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'裏面的內容。 –