[英]Variable scope or parent environment
考虑具有以下功能的功能:
f1=function(){
f3=function() print(a)
f2=function() {
print(a)
a=3
f3()}
print(a)
a=2
f2()
a=1
f1()
[1] 1
[1] 2
[1] 2
为什么f2()
将f1()
f2()
视为其父环境,而f3()
不将f2()
视为其父环境? 我希望f3()
打印3
,设置为f2()
,而不是2
。
如果在f2()
内定义了变量,则f3()
找不到它:
f1=function(){
f3=function() print(b)
f2=function() {
print(a)
b=3
f3()}
print(a)
a=2
f2()
a=1
f1()
[1] 1
[1] 2
Error in print(b) : object 'b' not found
为什么
f2()
认为f1()
是其父环境
因为它是在f1
内部定义的。
但是
f3()
不将f2()
视为其父环境?
因为它没有在f2
内部定义。
您需要区分包含环境和父框架 。 f2
是呼叫中f3
的父帧 。 但是f1
是其包含环境。
另请参见R中parent.frame()
和parent.env()
之间的区别是什么? 它们在通过引用进行调用方面有何不同? 以及Hadley对环境的介绍 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.