【发布时间】:2017-04-20 01:38:57
【问题描述】:
考虑具有以下功能的功能:
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() 其父环境,而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
【问题讨论】: