楼主: 真寒冰
1112 4

[学习分享] 关于自定义函数中,存在多层调用,参数是如何传递的,是否也符合词法作用域 [推广有奖]

  • 0关注
  • 0粉丝

高中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
174 个
通用积分
0.6000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
215 点
帖子
6
精华
0
在线时间
72 小时
注册时间
2015-7-26
最后登录
2024-6-22

楼主
真寒冰 发表于 2019-10-10 15:08:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
举个例子
> f<-function(x){
x+1
}
> g<-function(x){
   f(x+3)
}
> g(4)
[1] 8
上面的执行过程是怎样的?我的理解是g(4)调用g函数,其中参数x=4,调用f函数,其中参数x=x+3,然后执行x+1,进行参数传递x=x+3,则x+1=x+4,然后查找x的值,根据词法作用域,f的执行环境没有x的值,到f的封闭环境中查找,即是全局环境查找x的值,也没有找到,那么结果应该是报错。正确的理解应该是怎样求大佬解析



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:自定义函数 自定义 函数 参数 环境 词法作用域

沙发
steventung 发表于 2019-10-11 09:13:31
g(4)调用应为,将4传递给g的function中的x,结果应为7。

  1. > f<-function(x){
  2. +   x+1
  3. + }
  4. >
  5. > g<-function(x){
  6. +   x+3
  7. + }
  8. >
  9. > g(4)
  10. [1] 7
复制代码

藤椅
真寒冰 发表于 2019-10-11 09:58:30
steventung 发表于 2019-10-11 09:13
g(4)调用应为,将4传递给g的function中的x,结果应为7。
g函数调用了f函数 f(x+3),不是x+3

板凳
jinkelazzz 发表于 2019-10-11 10:09:12
不就是f(7)吗

报纸
真寒冰 发表于 2019-10-11 12:57:33
jinkelazzz 发表于 2019-10-11 10:09
不就是f(7)吗
你的意思是 在执行g函数时,调用f函数,先开始计算x+3=7,在进行参数传递?但这个好像不符合惰性求值?

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 03:07