Ho esaminato le altre domande con scope lessicale in R e non riesco a trovare la risposta. Considerate questo codice:Quando è impostato Lexical Scope per una funzione all'interno di una funzione?
f <- function(x) {
g <- function(y) {
y + z
}
z <- 4
x + g(x)
}
f(3)
f(3)
restituirà una risposta di 10. La mia domanda è: perché? Nel punto g()
definito nel codice, z
non è stato assegnato alcun valore. A che punto è stata creata la chiusura per g()
? "Guarda avanti" al resto del corpo della funzione? Viene creato quando viene valutato lo g(x)
? Se è così, perché?
Potrebbe aiutare le persone a spiegare se hai detto quale valore ti aspettavi diverso da 10 – joran
Nota che in una nuova sessione, 'f <- function (x) {y}' definirà 'f' senza problemi. A R non importa cosa c'è dentro f finché non viene chiamato. –