新手问题,求大神解答

-which 2013-12-07 04:08:11
什么是静态作用域法?什么是动态作用域法?希望各位高手解答,可以具体一点就具体一点,最好举个例子。
谢谢帮忙啊。
...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
-which 2013-12-10
  • 打赏
  • 举报
回复
谢谢各位了。
Hello-Stone 2013-12-07
  • 打赏
  • 举报
回复
首先你要理解所谓“自由变量”的概念,就是一个函数非本地定义也不是函数参数的变量。 从实现的角度,所谓静态还是动态作用域,它们对“自由变量”的定位是不一样的。 动态作用域中查找自由变量,是顺着函数调用活动纪录形成的堆栈反向查找(当然这只是一种实现方式,还有别的实现方式),所谓的“动态链”。 静态作用域中查找自由变量,是在函数定义时的环境中查找。为了搞定静态作用域,可以把函数实现为一个闭包(即包含代码和定义时的环境的一个二元组),这样查找自由变量就方便多了。 从写解释器的方面看,实现静态作用域更麻烦,所以很多解释语言象lisp、perl初期都用动态作用域,现在还有一些lisp方言如newlisp、picolisp也是动态作用域。
teemai 2013-12-07
  • 打赏
  • 举报
回复
不是很理解楼主你说的名词:静/动态作用域法。 你是要问static关键字吗

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧