码迷,mamicode.com
首页 > 其他好文 > 详细

R语言变量作用域

时间:2014-05-09 08:34:39      阅读:440      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

语言采用的是Lexical Scoping(词法作用域)。词法作用域,又称静态作用域,即变量定义后的作用域是不变的。
 
在函数的主体里面,变量是分为被约束的、局部的、或自由的三种。被约束的变量是指匹配函数形式参数的变量。局部变量是指,在函数主题内创建和定义的变量。自由变量指的是那些既不是 局部也不是被约束的变量。当一个函数主体被求值,确定一个局部或 被约束变量的值没有问题。作用域规则决定了一个语言如何为自由变量 找恰当的值。
 
在R中,自由变量的取值是由它所在函数定义的环境(environment)中的取值决定的。看下面一段代码:
bubuko.com,布布扣
y <- 10
f<- function(x){
    y <- 2
    y^2 + g(x)
}

g <- function(x){
    x*y
}

f(3)
bubuko.com,布布扣
求值f(3): y是函数f中的局部变量,被赋值为2;在函数f内调用函数g,在函数g中y是自由变量,g(2)=2*y,y的取值是由定义函数g时决定的,因此y的取值是10而不是2。因此得到值为34。
 

R语言变量作用域,布布扣,bubuko.com

R语言变量作用域

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/messcode/p/3717697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!