非IT出身,看到Scoping Rule神马的是非常头疼的,尤其是需要涉及到Function的嵌套的时候,很容易将不同environment种的变量弄混淆,还是自己动手实践一下比较好。
在一个Function中,对一个变量的lexical scoping rule的检索次序是,先检查本Function中的environment,如果能找到该变量,则返回该变量,如果不能,则检索这个Function被创建(不是被调用)的Environment,以此类推,一直到检索Global Environment。
写了2段code,在写code之前,先提出两个问题:
1. a和全局环境各存在一个环境e,当a调用b时,b中的e$x, e$y和e$z如何检索?
2. 全局环境变量的赋值符号 "
<<-
"如何发挥作用?
第一段:b函数在a函数外创建,a函数及global env.各创建一个环境变量e
# Chunk 1:
> a <- function(x){
> e <- new.env()
> e$x <- 111
>
> e$x <- 111
>