R语言变量作用域

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

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

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

转载于:https://www.cnblogs.com/messcode/p/3717697.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值